具有以下json片段:
"Location": {
"Address": ""
},
public class Address implements Serializable
{
@JsonProperty("City")
private String city;
@JsonProperty("StateProvinceCode")
private String stateProvinceCode;
@JsonProperty("PostalCode")
private String postalCode;
@JsonProperty("CountryCode")
private String countryCode;
private final static long serialVersionUID = -4475717488164417476L;
/**
* No args constructor for use in serialization
*
*/
public Address() {
}
/**
*
* @param city
* @param countryCode
* @param postalCode
* @param stateProvinceCode
*/
public Address(String city, String stateProvinceCode, String postalCode, String countryCode) {
super();
this.city = city;
this.stateProvinceCode = stateProvinceCode;
this.postalCode = postalCode;
this.countryCode = countryCode;
}
getters and settes ...
这是我的对象映射器配置
@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new Jdk8Module());
mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false);
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
return mapper;
}
附加注意:Pojo类是使用jsonschema2pojo gradle插件生成的,并且基于json模式
正如@Dmitry Zagorulkin所建议的,将deserializationfeature.accept_empty_string_as_null_object
改为true
。更多详细信息,请查看文档。
下面是我试图复制该问题的代码,并通过添加注释突出显示的行来修复该问题。
public class JacksonExample2 {
private static String json1 = "{\r\n" +
" \"Location\": {\r\n" +
" \"Address\": \"\"\r\n" +
" }\r\n" +
"}";
public static void main(String[] args) throws JSONException, IOException {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new Jdk8Module());
mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false);
// Add this line
mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
ParentData parentData = mapper.readValue(json1, ParentData.class);
Address address = new Address("New York", null, null, null);
LocationData locationData = new LocationData(address);
System.out.println(parentData);
}
}
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
class ParentData {
@JsonProperty("Location")
private LocationData locationData;
}
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
class LocationData {
@JsonProperty("Address")
private Address address;
}
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@ToString
class Address implements Serializable {
@JsonProperty("City")
private String city;
@JsonProperty("StateProvinceCode")
private String stateProvinceCode;
@JsonProperty("PostalCode")
private String postalCode;
@JsonProperty("CountryCode")
private String countryCode;
private final static long serialVersionUID = -4475717488164417476L;
}
我正在尝试从Java文本文件中读取一行。我得到一个异常。 这是文本文件中的行: 我需要用“#”拆分,这部分起作用了。当我试图访问位置1处的元素时,Java抛出异常。我想这是因为名字和姓氏之间有空格,因为当我显示的是“Chiquita”,而不是“Chiquita Sanford”。 当第一个数组索引中有多个单词时,Java对拆分是否有一些限制。
我需要构造正则表达式来验证文本,它可以包含空格和连字符,除了连字符之外没有数字和特殊字符。文本应以字母开头。没有以空格和连字符开头和结尾。单词之间应允许使用单个空格。 ASDF-A ADF-AAD A-A-A A DDD-A 示例 AD-AA-A ADF-ad-DD-A AAA
问题内容: 我试图理解字符串比较与字符串比较的输出。需要明确的是,我拥有使用==和equals比较两个字符串的类。我试图将==和equals()的输出合并为字符串。equals()的输出会连续显示,但==的输出不会 连续显示。使用Java的装箱功能,将与字符串连接的布尔值联系起来。equals和==都返回布尔值。那么为什么会有这种差异呢?有人可以解释吗? 输出 更新:答案 如果不使用s1 == s
问题内容: 我有一个字典,想删除所有有空值字符串的键。 做这个的最好方式是什么? 问题答案: Python 2.X Python 2.7-3.X 请注意,您所有的键都有值。只是其中一些值是空字符串。没有值的字典中就没有键。如果它没有价值,就不会在字典中。
问题内容: 我有这个: JSONLint表示这是完全有效的json。但是执行时出现错误。 但是,如果我将代码更改为: (请注意双反斜杠) 它可以工作,但是现在JSONLint表示。 有人可以帮助您了解这种行为吗? 问题答案: 有线格式和您必须在代码中编写的格式之间是有区别的。当您在代码中声明此代码时,您需要在文字中使用双-\,以便字符串获得一个反斜杠(否则,它将\\解释为一个转义序列,仅声明一个“
问题内容: 我正在从事Java代码优化。我不清楚或符号之间的区别: 第2行和第3行有什么区别? 问题答案: 这种方法使用StringBuilder创建结果字符串 此方法仅调用的静态方法来获取int的String版本 依次调用