Json jackson以不存在和空值读取到“”;和编组“”;不存在的价值观?
我通读了这篇文章,其中有一个很酷的技巧Json jackson以不存在和空值读取到“”;和编组“”;不存在的价值观?,json,jackson,Json,Jackson,我通读了这篇文章,其中有一个很酷的技巧 mapper.configOverride(String.class) .setSetterInfo(JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY)); objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); 另一方面,我通读了这篇文章,其中有一个很酷的技巧 mapper.configOverride(String.cl
mapper.configOverride(String.class)
.setSetterInfo(JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY));
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
另一方面,我通读了这篇文章,其中有一个很酷的技巧
mapper.configOverride(String.class)
.setSetterInfo(JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY));
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
这是非常非常接近,除了我真的不希望传入的数据在任何情况下为空。我使用上述设置打印了以下4种情况的代码,但希望修复空部分,以便将任何json解组为java
public class MapperTest {
private static final Logger log = LoggerFactory.getLogger(MapperTest.class);
private ObjectMapper mapper = new ObjectMapper();
public MapperTest() {
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.configOverride(String.class)
.setSetterInfo(JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY));
}
public static void main(String[] args) throws JsonProcessingException {
new MapperTest().start();
}
private void start() throws JsonProcessingException {
//write out java color=null resulting in NO field...
String val = mapper.writeValueAsString(new Something());
log.info("val="+val);
Something something = mapper.readValue(val, Something.class);
log.info("value='"+something.getColor()+"'");
//write out java color="" resulting in NO field...
Something s = new Something();
s.setColor("");
String val2 = mapper.writeValueAsString(new Something());
log.info("val="+val2);
String temp = "{\"color\":null,\"something\":0}";
Something something2 = mapper.readValue(temp, Something.class);
log.info("value2='"+something2.getColor()+"'");
}
}
然后输出为
INFO: val={"something":0}
INFO: value='null'
INFO: val={"something":0}
INFO: value2=''
注意:值='null'不是我想要的,我希望它也是空字符串。请注意,如果客户提供的颜色为“null”,则会产生空字符串。不存在对我们来说应该是同样的结果。
我的意思是,这是一个巨大的胜利,在这方面,我们的失误更少。
谢谢
院长