Tag: json

使用GSON反序列化包含JSON的对象

我正在使用gson从JSON表示中反序列化POJO对象。 我希望我的一个POJO中的一个字段包含任意JSON数据。 例如: class B { public String stringField; public JsonObject jsonField; } 我希望能够在以下JSON上调用Gson.fromJson(json, B.class) : { “stringField”: “booger”, “jsonField” : { “arbitraryField1”: “foo” } } 并使得生成的B.jsonField包含一个值为foo的arbitraryField的JsonObject。 但是,当我尝试这样做时, jsonField始终是一个空对象( {} )。 事实上,更一般地说,以下似乎总是返回一个空对象: new Gson().fromJson(“{ foo: 1 }”, JsonObject.class) 我希望上面的内容返回一个包含名为foo的值为1的字段的对象。 在将json反序列化为POJOS时,如何让gson保留任意json数据?

Hibernate和JSON – 是否存在循环依赖的最终解决方案?

在这些日子里,我正在努力使用Hibernate实体和JSON,尽管有很多关于该对象的问题,但我还是无法在存在循环依赖性的情况下进行序列化。 我和Gson和jackson都试过了,但我没有取得很多进展。 这是我的对象的摘录。 这是“父”类。 @Entity public class User extends RecognizedServerEntities implements java.io.Serializable { @Id @GeneratedValue(strategy = IDENTITY) @Column(name = “id”, unique = true, nullable = false) private Integer id; @OneToMany(fetch = FetchType.LAZY, mappedBy = “user”, orphanRemoval = false) @Cascade({CascadeType.SAVE_UPDATE}) private Set threads = new HashSet(0); //…other attributes, getters and setters } 这就是“儿童”课程 @Entity @Table(name = […]

如何使用Jackson的本地化小数分隔符反序列化浮点值

我用Jackson解析的输入流包含纬度和经度值,例如: { “name”: “product 23”, “latitude”: “52,48264”, “longitude”: “13,31822” } 由于某种原因,服务器使用逗号作为小数分隔符,产生InvalidFormatException 。 由于我无法更改服务器输出格式,因此我想教jackson的ObjectMapper来处理这些情况。 这是相关的代码: public static Object getProducts(final String inputStream) { ObjectMapper objectMapper = new ObjectMapper(); try { return objectMapper.readValue(inputStream, new TypeReference() {} ); } catch (UnrecognizedPropertyException e) { e.printStackTrace(); } catch (InvalidFormatException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (JsonParseException […]

Spring REST | MappingJacksonHttpMessageConverter生成无效的JSON

我用Spring实现了一个RESTful Web服务。 该服务基于Accept标头以XML或JSON响应。 这是context.xml映射: 这是我的控制器方法: @Controller @RequestMapping(value = “/entityService”) class RestfulEntityService { @Resource private EntityService entityService; @ResponseBody @RequestMapping(value = “/getAllEntities”, method = RequestMethod.GET) public List getAllEntities() { return entityService.getAllEntities(); } } XML响应是有效的,但是,当客户端将Accept标头设置为application / json时,响应是无效的JSON。 这是JSON响应示例: [{“id”:3,”attributes”:[{“id”:18,”attributeValue”:null,”attributeName”:”mobile”,”attributeType”:”varchar(40)”,”entity”:{“id”:3,”attributes”:[{“id”:18,”attributeValue”:null,”attributeName”:”mobile”,”attributeType”:”varchar(40)”,”entity”:{“id”:3,”attributes”:[{“id”:18,”attributeValue”:null,”attributeName”:”mobile”,”attributeType”:”varchar(40)”,”entity”:{“id”:3,”attributes”: ….. repeats for a while and then stops..

Java:Json有密钥/字段

我想知道检测JSON字符串中是否存在键/字段的最简单方法。 例如: if(jsonObject(myJsonString).hasKey(“myKey”)){ } 我不想写很多东西。 我目前正在使用最小的JSON,它似乎没有这样的function。 答案:JSONObject jsonObj2 = new JSONObject(message); 如果(jsonObj2.has( “钥匙”));

使用JSONParser与GWT的问题

我有一个简单的GWT应用程序需要从另一台服务器获取一些JSON数据。 我已经按照几个教程来达到这一点。 当我尝试编译它时,我得到错误 [错误]第44行:没有源代码可用于com.google.gwt.json.client.JSONValue类型; 你忘了inheritance一个必需的模块吗? [错误]第44行:没有源代码可用于com.google.gwt.json.client.JSONParser类型; 你忘了inheritance一个必需的模块吗? [错误]第46行:没有源代码可用于com.google.gwt.json.client.JSONArray类型; 你忘了inheritance一个必需的模块吗? [错误]第49行:没有源代码可用于com.google.gwt.json.client.JSONObject类型; 你忘了inheritance一个必需的模块吗? 我知道我必须补充一下 到我的.gwt.xml文件,但无法弄清楚要添加什么来让它识别JSON的东西。 我错过了什么? 相关代码: private SearchResult[] parseResponse(String jsonResponse) { ArrayList retArray = new ArrayList(); JSONValue jval = JSONParser.parseStrict(jsonResponse); JSONArray resultArray = jval.isArray(); for(int i=0; i<resultArray.size(); i++) { JSONObject resultObj = resultArray.get(i).isObject(); String title = resultObj.get("title").isString().stringValue(); JSONArray roleArray = resultObj.get("roles").isArray(); String roleNames = new String(); […]

Jackson2 PropertyFilter用于嵌套属性,还是有另一种方法?

我目前正在寻找一种以多种方式序列化对象而不直接干扰类的方法。 (比如添加大量注释) 想象一下这样的一个类: class User { String id; String name; String email; … User manager; } SimplePropertyFilter提供了几乎所需的function,但问题是此filter忽略当前对象的级别,并在每个对象上应用所有已定义的filter,无论它是否为嵌套filter。 我不仅限于filter,但我想避免为每个所需的json响应编写多个类。 有没有办法用Jackson2实现这种行为? 如果我们想为编辑表单序列化,我们需要所有字段,但对于用户列表,我们可能只需要其中的一些。 然而,对于经理而言,我们总是只需要“ id ”和id 。 这就是搜索的解决方案。 JSON输出应该是这样的: { “id” : “20”, “login” : “USER20”, “name” : “User 20”, “email” : “user20@no.where”, “manager” : { “id” : “1”, “name” : “Administrator” } } 我觉得属性过滤方法让我非常接近所需的解决方案,但从我发现的只能定义“简单”属性。 public class UserJsonWriter […]

jackson:无法反序列化START_OBJECT令牌中的Number实例

我的GWT服务返回LinkedList 。 这是VisualData外观: import javax.xml.bind.annotation.XmlRootElement; import com.google.gwt.user.client.rpc.IsSerializable; @XmlRootElement public class VisualData implements IsSerializable { private Number value; private long timestamp; public VisualData() { } public VisualData(Number value, long timestamp) { this.value = value; this.timestamp = timestamp; } public long getTimestamp() { return timestamp; } public Number getValue() { return value; } public void setTimestamp(long timestamp) […]

将字段传递给自定义反序列化器类Jackson

我编写了一个自定义反序列化器,只使用jackson映射必需的字段。 开始。 public class GeneralDeserializer extends JsonDeserializer { @Override public GeneralDomain deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { final JsonNode jsonNode = jp.getCodec().readTree(jp); final Map map = new ObjectMapper().convertValue(jsonNode, Map.class); final String event = “Proxy”; return new GeneralDomain(map.get(“id”), event, map.get(“name”), map.get(“lastLogin”)); } @Override public Class handledType() { return GeneralDomain.class; } } 我也有一个mixin类,可以添加额外的注释。 @JsonDeserialize(using = […]

在Java中将csv行转换为JSON对象

我有一个与此类似的csv文件 “name.firstName”,”name.givenName”,”name.DisplayName”,”phone.type”,”phone.value” “john”,”maverick”,”John Maverick”,”mobile”,”123-123-123″ “jim”,”lasher”,”Jim Lasher”,”mobile”,”123-123-123″ 我想将第2行和第3行转换为JSON对象。使用第一行作为标题。 结果将是 [ { “name”: { “firstName”: “john”, “givenName”: “maverick”, “DisplayName”: “John Maverick” }, “phone”: { “type”: “mobile”, “value”: “123-123-123” } }, { “name”: { “firstName”: “john”, “givenName”: “maverick”, “DisplayName”: “John Maverick” }, “phone”: { “type”: “mobile”, “value”: “123-123-123” } ] 知道怎么做到这一点?