使用 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(模型类):
家庭.java
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Family {
private String father;
private String mother;
private List<Children> children;
// Getter & Setters
}
儿童.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 控制台中得到的格式相同?
感谢您抽时间阅读...