Tag: json

在SpringMVC的上下文中,如何使用提供同一类的不同JSON表示的Web服务?

我有一个数据类,如下所示: public class Person { private String name; private Long code; // corresponding getters and setters } 我想编写两个Web服务,它们提供两种不同的JSON表示forms。 例如,其中一个提供{“name”:”foo”}但另一个提供{“name”:”foo”, “code”:”123″} 。 作为一个更复杂的场景,假设Person有一个引用属性,例如address。 地址也有自己的属性,我希望我的两个Web服务都考虑这个属性,但每个属性都以自己的方式执行。 我的SpringMVC视图应该如何? 请注意,我是SpringMVC的新手。 请在答案旁边给我一个示例代码。 更新1:几天后,所有答案都促使我解决控制器中的问题或通过注释数据类。 但是我希望在视图中执行此操作,而不再使用java代码。 我可以在JSP文件或百万美元模板甚至.properties文件中执行此操作吗? 更新2:我找到了json-taglib 。 但不知何故,它被排除在新的升级之外。 有没有类似的解决方案?

无法在Java Servlet中反序列化JSON

我的端点无法理解传入的JSON。 这是端点: import javax.ws.rs.Consumes; import javax.ws.rs.DefaultValue; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.hibernate.Query; import org.hibernate.Session; import org.json.JSONObject; … @POST @Path(“/{department}/{team}”) @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response handleJSON(JSONObject json , @PathParam(“department”) String department, @PathParam(“team”) String team){ MyObj myObj = new MyObj(); myObj.setDepartment(department); myObj.setTeam(team); myObj.setPlatform(json.optString(“platform”)); saveObj(myObj); return Response.ok(true).build(); […]

来自vividsolutions JTS的几何图形在创建JSON时失败

好朋友。 我在我的应用程序中使用了vividsolutions的库JTS(1.13)for Points and Polygons,但是当我尝试将几何对象转换为JSON时,我的应用程序失败了。 有我的来源: @RequestMapping(value = “/test_point”, method = RequestMethod.GET, produces = “application/json;charset=UTF-8”) @ResponseBody public Map testPoint() { Point point = geometryFactory.createPoint(new Coordinate(37.73, 60.45)); return RequestMapBuilder.getInstance() .addAttribute(“point”, point) .build(); } 还有我收到的JSON: {“point”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”:{“envelope”: AND SO ON… 我的应用程序也抛出此exception: java.lang.IllegalStateException: Cannot call sendError() after the response has been committed at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:478) at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:129) at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:129) at […]

将json对象解析为字符串

我有一个关于我正在构建的Web应用程序的问题,其中我有一个接收json字符串的REST服务。 Json字符串类似于: { “string” : “value”, “string” : “value”, “object” : { “string” : “value”, “string” : “value”, …. } } 我正在使用resteasy来解析使用下面的jackson的json字符串。 我有一个jaxb注释类,我想将“对象”完全解析为String变量。 我想这样做的原因是以后能够使用正确的解析器解析json(它取决于发送请求的应用程序,因此事先无法知道)。 我的jaxb注释类看起来像这样: @XmlRootElement @XmlAccessorType(XmlAccessType.PROPERTY) public class Test{ @XmlElement(type = String.class) private String object; //getter and setter … } 当我执行其余的调用并让jackson解析这段代码时,我得到了一个 Can not deserialize instance of java.lang.String out of START_OBJECT token 错误。 所以实际上我正在尝试将一个json字符串(一个json对象)解析为一个String。 我似乎找不到有类似问题的人。 […]

XStream解析没有根节点的JSON

我目前正在使用XStream对JSON进行反序列化,并且它一直运行良好。 但是,当我有如下JSON字符串时 { key1: { an_object: { something: ‘foobar’ } }, key2: { another_object: { data: ‘hi’ } } 最值得注意的是它没有根节点,我不知道如何解析它。 基本上,我希望DROP_ROOT_NODE与反序列化相反。

Gson反序列化为地图

我有这个json字符串,我需要将其反序列化为map:Map “players_test”: [ { “54231f85f8e049c7bd8ac0aba3d1caf7”: { “uuid”: “54231f85f8e049c7bd8ac0aba3d1caf7”, “name”: “TomShar”, “signup_time”: “2014-07-04 16:27:16” } }, { “54231f85f8e049c7bd8ac0aba3d1caf7”: { “uuid”: “54231f85f8e049c7bd8ac0aba3d1caf7”, “name”: “TomShar”, “signup_time”: “2014-07-04 16:27:16” } }, { “54231f85f8e049c7bd8ac0aba3d1caf7”: { “uuid”: “54231f85f8e049c7bd8ac0aba3d1caf7”, “name”: “TomShar”, “signup_time”: “2014-07-04 16:27:16” } } ] 所以字符串应该是键,然后值应该是它所代表的对象。 我有一个为UUID对象编写的自定义deseriaziler,并且经过测试和工作(所以这不是问题)。 编辑: 我找到了一个更好的JSON结构,我可以用于我的问题,这完全符合我的要求。 “players”: { “54231f85-f8e0-49c7-bd8a-c0aba3d1caf7”: { “uuid”: “54231f85-f8e0-49c7-bd8a-c0aba3d1caf7”, “name”: “TomShar”, “kills”: 0, “assists”: […]

gson – 序列化任何类型的对象时如何包含类名属性

后来意识到我需要在我的应用程序中序列化对象时将类名称包含为属性。 如果我为序列化的任何非基本对象添加了类名属性,那可能是最好的。 我看到这是Genson中使用useClassMetadata方法的内置function。 但是我已经在我的项目中使用了gson,所以如果我坚持下去就会有所帮助。 这是我目前的尝试: package com.mycompany.javatest; import com.google.gson.*; import java.lang.reflect.*; public class JavaTest { public static class GenericSerializer implements JsonSerializer, JsonDeserializer { private static final String CLASS_PROPERTY_NAME = “class”; @Override public JsonElement serialize(Object src, Type typeOfSrc, JsonSerializationContext context) { JsonElement retValue = context.serialize(src); if (retValue.isJsonObject()) { retValue.getAsJsonObject().addProperty(CLASS_PROPERTY_NAME, src.getClass().getName()); } return retValue; } @Override public […]

jackson在json中添加了反斜杠

我正在Jersey上构建REST服务,并使用Jackson从我的模型的java类生成JSON。 模型具有绝对简单的值,我认为这是最典型的情况。 但我得到了奇怪的结果: [{\”name\”:\”Nick\”,\”role\”:\”admin\”,\”age\”:\”32\”,\”rating\”:47}] 我期待的结果: [{“name”:”Nick”,”role”:”admin”,”age”:”32″,”rating”:47}] 我的字段源值不包含任何特殊字符。 这些都是简单的话。 有我的Java课程。 实体: public class User { private String name; private String role; private String age; private Integer rating; rest服务类别: @ServiceConfig(contextName = “myContext”) @Path(“/myrest”) public class MyRestService { private static final String JSON_CONTENT_TYPE = MediaType.APPLICATION_JSON + “;charset=UTF-8”; @Context protected HttpServletResponse response; @GET @Path(“/users”) @OpenTransaction @Produces({MediaType.APPLICATION_JSON}) public String findUsers(@QueryParam(“department”) […]

使用jackson解析Json文件

{ “TestSuite”:{ “TestSuiteInfo”:{ “-description”:”parse” }, “TestCase”:[ { “TestCaseData”:{ “-sequence”:”sequential”, “-testNumber”:”2″, “-testCaseFile”:”testcase\\Web\\Ab.xml” } }, { “TestCaseData”:{ “-sequence”:”sequential”, “-testNumber”:”3″, “-testCaseFile”:”testcase\\Web\\BC.xml” } } ] } } 我的Pojos是: public class TestSuite { private TestSuiteInfo testSuiteInfo; private TestCase listOfTestCases; public TestSuiteInfo getTestSuiteInfo() { return testSuiteInfo; } public void setTestSuiteInfo(TestSuiteInfo testSuiteInfo) { this.testSuiteInfo = testSuiteInfo; } public TestCase getListOfTestCases() { return […]

在单个get中访问嵌套的json数据?

我试图从json对象中获取一个值。 我如何获得第三级json对象: json格式如下: feedString = {“level1”:[{“level2”:{“level3”:{“valueIWant”:10}}}]} 代码是: JSONObject jsonFeed = new JSONObject(feedString); jsonFeed.get(“level1.level2.level3.valueIWant”); 我可以一次获得嵌套级别吗? 我的钥匙应该是什么样的?