Java 6、Tomcat 7、Jersey 1.15、Jackson 2.0.6 (FasterXml maven repo から)、および Google GSON 2.2.2 を使用して、JSON 文字列をきれいに印刷しようとしているので、curl -X GET コマンド ラインによってインデントされます。 .
次のアーキテクチャを持つ単純な Web サービスを作成しました。
私の POJO (モデル クラス):
Family.java
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Family {
private String father;
private String mother;
private List<Children> children;
// Getter & Setters
}
Children.java:
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Children {
private String name;
private String age;
private String gender;
// Getters & Setters
}
ユーティリティ クラスを使用して、次のように POJO をハード コードすることにしました。
public class FamilyUtil {
public static Family getFamily() {
Family family = new Family();
family.setFather("Joe");
family.setMother("Jennifer");
Children child = new Children();
child.setName("Jimmy");
child.setAge("12");
child.setGender("male");
List<Children> children = new ArrayList<Children>();
children.add(child);
family.setChildren(children);
return family;
}
}
私のウェブサービス:
import java.io.IOException;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jettison.json.JSONException;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;
import com.google.gson.JsonParser;
import com.myapp.util.FamilyUtil;
@Path("")
public class MyWebService {
@GET
@Produces(MediaType.APPLICATION_JSON)
public static String getFamily() throws IOException,
JsonGenerationException,
JsonMappingException,
JSONException,
org.json.JSONException {
ObjectMapper mapper = new ObjectMapper();
String uglyJsonString = mapper.writeValueAsString(FamilyUtil.getFamily());
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonParser parser = new JsonParser();
JsonElement jsonElement = parser.parse(uglyJsonString);
System.out.println(gson.toJson(jsonElement));
return gson.toJson(jsonElement);
}
}
これを使用して実行すると:
curl -X GET http://localhost:8080/mywebservice
私はEclipseのコンソールでこれを取得します(これはまさにcurlコマンドから欲しいものです):
{
"father": "Joe",
"mother": "Jennifer",
"children": [
{
"name": "Jimmy",
"age": "12",
"gender": "male"
}
]
}
しかし、上記のコマンド ライン curl コマンドから、次のようになります (\n の後に 4 つのスペースがありますが、JavaRanch のフォーラムには表示されません)。
"{\n \"father\": \"Joe\",\n \"mother\": \"Jennifer\",\n \"children\": [\n {\n \"name\": \"Jimmy\",\n \"age\": \"12\",\n \"gender\": \"male\"\n }\n ]\n}"
curl コマンドを使用して、JSON フォーマットを Eclipse のコンソールで取得しているものと同じにするにはどうすればよいですか?
これを読んでくれてありがとう...