我使用Spring框架从GET请求接收JSON。所有的工作都很好,直到在DB中输入了一个错误的值,发生了以下情况:
02-25 14:46:04.035:E/AndroidRuntime(12271):org.springframework.http.converter.httpmessagenotreadableException:无法读取JSON:无法从字符串值“-3600”构造java.util.Date实例:无效表示(错误:无法解析日期值“-3600”:无法解析日期“-3600”:与任何标准形式(“yyyy-mm-dd”t“hh:mm:ss.ssz”,“yyyy-mm-dd”t“hh:mm:ss.sss”z“,”eee,dd MMM yyyy hh:mm:ssszz“,”
如何设置Jackson忽略不可读/可解析的值?我宁愿有null左右也不愿我的完整json解析失败...
这里是我试图解析到的对象,您可以看到,我试图在代码中使用jsonignoreproperties忽略属性。
收据:
public class Receipt {
public String categories;
@JsonProperty("expiration_date")
public Date expirationDate;
public String image1;
public String image2;
(.. more properties, getters and setters ..)
RestTemplate restTemplate = new RestTemplate();
// instellen dat de converter ongedefineerde parameters negeert
HttpMessageConverter customconver = new MappingJackson2HttpMessageConverter();
((MappingJackson2HttpMessageConverter) customconver).getObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); //here the ignore unknown
restTemplate.getMessageConverters().add(customconver);
restTemplate.getMessageConverters().add(new StringHttpMessageConverter());
try {
// GET Request
ResponseEntity<ReceiptMessage> response = restTemplate.exchange(urlPath, HttpMethod.GET,requestEntity,ReceiptMessage.class);
在ObjectMapper
上有一个名为write_dates_as_timestamps
的设置。这会导致日期序列化为长而不是字符串,因此禁用它以获取字符串。您绝对应该阅读以下内容:http://wiki.fasterxml.com/jacksonfaqdatehandling
如果您不想这样做,要忽略基于某种逻辑的字段,只需为需要很长时间的日期字段添加一个setter并自己解析它。您可能需要使用@jsonsetter(“expiration_date”)
对其进行注释,以便Jackson知道在其中传递它。
最后,Java日期/日历API被公认为是非常可怕的,在任何可能的情况下都应该避免使用。如果您使用的是Java8,那么新的日期/时间API要好得多。如果您是Java8之前的版本,请使用jodatime。甚至有专门的Jackson模块来处理它。
我正在用java中的jackson构建一个json体。它会像下面这样 基于不同的 REST URI,json 主体必须忽略某些字段或元素。如何使用杰克逊忽略上述 json 正文中的“学生”部分?当我忽略它时,我应该只能得到 但我得到它如下,这是不正确的- 我有两个带有getters和setters的类,一个作为主语,另一个作为学生。我尝试使用@JsonIgnore,但是它忽略了所有的URI,这是我
问题内容: 当我发送此请求时: 我的休息服务: 我期望得到一个例外,因为: 我的域模型中没有invalidField。 日期格式无效。 但是实际上我得到的测试对象具有空值。我的dmain模型是: 我认为这不是有效的行为。我该如何解决? 感谢帮助。 解: 正如Blaise Doughan所说,需要扩展MOXy的MOXyJsonProvider并重写preReadFrom方法以设置自定义javax.x
这是我的东西 当我得到响应时,我看到 我的看起来像 问题 如何消除中的值?
我试图使用Jackson注释来重新命名序列化过程中产生的一些json标签。所有注释都编译得很好,当我运行时,除了所有Jackson注释之外,Jackson序列化工作完全被忽略。即使像@jsonignore或@jsonproperty这样的基本命令对json响应也没有影响。构建路径中的库有: 下面是我需要序列化的一个类的代码示例:
在Spring MVC中,我需要将空字符串()视为。这是因为我发现,当我编辑一个表单字段(带有Angular的ng-model),该字段最初是,然后将其擦除为空白时,Angular将以空字符串的形式发送该bean属性。如果我不接触这样的null值,它将不会在JSON有效负载中发送,因此被视为null。