Questions tagged «jackson»

Jackson是一个Java库,用于处理诸如读写(解析/生成)以及与Java对象之间的数据绑定之类的任务。尽管主要用于JSON,但Jackson还支持许多其他数据格式,例如Avro,CBOR,CSV,Java属性,Protobuf,Smile,XML和YAML。

8
使用Jackson映射时,将默认值设置为空字段
我正在尝试使用Jackson将一些JSON对象映射到Java对象。JSON对象中的某些字段是必填字段(可以用标记@NotNull),而某些字段是可选字段。 用Jackson映射后,在JSON对象中未设置的所有字段在Java中都将具有空值。是否有类似的注释@NotNull可以告诉Jackson为Java类成员设置默认值(如果为null)? 编辑:为了使问题更清楚,这里是一些代码示例。 Java对象: class JavaObject { @NotNull public String notNullMember; @DefaultValue("Value") public String optionalMember; } JSON对象可以是: { "notNullMember" : "notNull" } 要么: { "notNullMember" : "notNull", "optionalMember" : "optional" } 该@DefaultValue注释只是为了展示一下我问。这不是真正的注释。如果JSON对象类似于第一个示例,则我希望的值optionalMember是"Value"and not null。有没有做这种事情的注释?
78 java  json  jackson 


4
用Jackson将反序列化的JSON反序列化为多态类型-一个完整的示例给我一个编译错误
我正在尝试浏览Programmer Bruce的教程,该教程应该允许多态JSON的反序列化。 完整列表可在此处找到 Programmer Bruce教程(很棒的东西) 我已经完成了前五项工作,没有任何问题,但是我在最后一项中遇到了麻烦(示例6),这当然是我真正需要工作的部分。 编译时出现以下错误 ObjectMapper类型的方法readValue(JsonParser,Class)不适用于参数(ObjectNode,Class) 这是由代码块引起的 public Animal deserialize( JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { ObjectMapper mapper = (ObjectMapper) jp.getCodec(); ObjectNode root = (ObjectNode) mapper.readTree(jp); Class<? extends Animal> animalClass = null; Iterator<Entry<String, JsonNode>> elementsIterator = root.getFields(); while (elementsIterator.hasNext()) { Entry<String, JsonNode> element=elementsIterator.next(); String name = …

10
由于输入结束杰克逊解析器,无法映射任何内容
我正在从服务器收到此响应 {"status":"true","msg":"success"} 我正在尝试使用Jackson解析器库解析此json字符串,但不知何故我正面临着映射异常说明 com.fasterxml.jackson.databind.JsonMappingException: No content to map due to end-of-input at [Source: java.io.StringReader@421ea4c0; line: 1, column: 1] 为什么会出现这种例外情况? 如何理解导致此异常的原因? 我正在尝试使用以下方式进行解析: StatusResponses loginValidator = null; ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(Feature.AUTO_CLOSE_SOURCE, true); try { String res = result.getResponseAsString();//{"status":"true","msg":"success"} loginValidator = objectMapper.readValue(result.getResponseAsString(), StatusResponses.class); } catch (Exception e) { e.printStackTrace(); } StatusResponse类 …
76 java  android  json  jackson 

5
如何使用Jackson来反序列化JS日期?
我从ExtJS获取日期字符串,其格式为: “ 2011-04-08T09:00:00” 当我尝试反序列化此日期时,它将时区更改为“印度标准时间”(该时间增加+5:30)。这就是我反序列化日期的方式: SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); getObjectMapper().getDeserializationConfig().setDateFormat(dateFormat); 这样做也不会更改时区。我仍然在IST中得到日期: SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); dateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); getObjectMapper().getDeserializationConfig().setDateFormat(dateFormat); 如何以无时区麻烦的日期反序列化日期?
72 java  json  datetime  jackson 

4
Spring RESTTemplate的泛型
我有这样的课: public class Wrapper<T> { private String message; private T data; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public T getData() { return data; } public void setData(T data) { this.data = data; } } 我使用resttemplate如下: ... Wrapper<Model> response = restTemplate.getForObject(URL, …

4
如何将以下json字符串转换为java对象?
我想将以下JSON字符串转换为Java对象: String jsonString = "{ "libraryname":"My Library", "mymusic":[{"Artist Name":"Aaron","Song Name":"Beautiful"}, {"Artist Name":"Britney","Song Name":"Oops I did It Again"}, {"Artist Name":"Britney","Song Name":"Stronger"}]}" 我的目标是轻松访问它,例如: (e.g. MyJsonObject myobj = new MyJsonObject(jsonString) myobj.mymusic[0].id would give me the ID, myobj.libraryname gives me "My Library"). 我听说过杰克逊,但是由于涉及“ mymusic”列表,我不知道如何使用它来适应我拥有的json字符串,因为它不仅仅是键值对。如果杰克逊不是最好的选择,我该如何用杰克逊完成?
70 java  json  jackson 

6
MockMvc在Spring Boot 2.2.0中不再处理UTF-8字符。
在升级到新发布2.2.0.RELEASE的Spring Boot版本之后,我的一些测试失败了。似乎MediaType.APPLICATION_JSON_UTF8已弃用了,并且不再从未显式指定内容类型的控制器方法中将其作为默认内容类型返回。 测试代码如 String content = mockMvc.perform(get("/some-api") .contentType(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8)) .andReturn() .getResponse() .getContentAsString(); 突然不再工作,因为内容类型不匹配,如下所示 java.lang.AssertionError: Content type Expected :application/json;charset=UTF-8 Actual :application/json 更改代码以.andExpect(content().contentType(MediaType.APPLICATION_JSON))解决此问题。 但是现在content,与预期的序列化对象进行比较时,如果对象中有任何特殊字符,则仍然不匹配。似乎.getContentAsString()默认情况下(不再)该方法不使用UTF-8字符编码。 java.lang.AssertionError: Response content expected:<[{"description":"Er hörte leise Schritte hinter sich."}]> but was:<[{"description":"Er hörte leise Schritte hinter sich."}]> Expected :[{"description":"Er hörte leise Schritte hinter sich."}] Actual :[{"description":"Er hörte leise …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.