我有以下几门课:
public class Container{
String description;
Element1 element1;
Element2 element2;
}
public class Element1{
String f11;
String f12;
}
public class Element2{
String f21;
String f22;
}
我将container
序列化为json格式。对于json序列化,我使用Jackson。
现在,如果f11
、f12
和f21
、f22
分别为空,我想不要将element1
和element2
包含到json中。
正如我所强调的,我应该编写cistom串行化程序,但我不明白是为哪个实体编写的。元素
还是容器
?怎么做的?
附注。
本主题说明如何忽略容器中的空值。我的问题是如何忽略容器中只有空值的对象
Staxman的回答启发出的另一个想法是实现一个“空元素模块”,该模块封装容器
中不同元素的isempty
的所有重写。例如,该模块可能如下所示:
public class EmptyElementModule extends SimpleModule {
private static final String NAME = "EmptyElementModule";
public EmptyElementModule() {
super(NAME);
setSerializerModifier(new EmptyElementSerializerModifier());
}
public static class EmptyElementSerializerModifier extends BeanSerializerModifier {
@Override
public JsonSerializer<?> modifySerializer(SerializationConfig config, BeanDescription beanDesc, JsonSerializer<?> serializer) {
Class<?> beanClass = beanDesc.getBeanClass();
if (beanClass == Element1.class) {
return new EmptyElement1Serializer((JsonSerializer<Object>) serializer);
} else if (beanClass == Element2.class) {
// return element 2 serializer
}
return serializer;
}
}
public static class EmptyElement1Serializer extends JsonSerializer<Element1> {
private final JsonSerializer<Object> defaultSerializer;
public EmptyElement1Serializer(JsonSerializer<Object> defaultSerializer) {
this.defaultSerializer = checkNotNull(defaultSerializer);
}
@Override
public void serialize(Element1 value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
defaultSerializer.serialize(value, gen, serializers);
}
@Override
public boolean isEmpty(SerializerProvider provider, Element1 value) {
return value.f11 == null && value.f12 == null;
}
}
}
我从accuweather获得了以下带有json的代码 我尝试通过Jackson将此对象解析为POJO 我有json中指定的所有模型,如、数组、,由组成(在json中命名为最小值和最大值)等,它们都有私有字段和公共构造函数、getter和setter。但是我没有一些字段,因为我想省略它们(Day、night、EpochDate、Source)。 当我运行程序时,我得到了错误 com.fasterx
问题内容: 当我使用Jackson对该对象进行反序列化时,我试图在Java对象中包含原始JSON。为了测试此功能,我编写了以下测试: 代码输出以下行: JSON正是我想要的外观。不幸的是,当尝试将JSON读回对象时,代码将失败并出现异常。这是例外: org.codehaus.jackson.map.JsonMappingException:无法从[源:java.io.StringReader@d7
我希望在每个数组中获取多个对象,但我的代码显示了单个对象的操作。下面是我的PHP代码,我如何添加另一个循环来获取多个对象 这是显示单个物体的结果
给定的示例模式包含一个字段,该字段是null和string的联合, 我想转换以下 json 对象, 转换成对应于上述模式的avro对象。我用Avro的JsonDecoder用下面描述的代码snppet试了一下, 它会异常失败,
问题内容: 我再次使用swift数组和NSArray仅提供的containsObject! 我将swift数组桥接到NSArray来执行以下操作: 它通常可以正常工作,但是只要我放一个String就可以了!在字符串类型的数组中,它崩溃。即使containsObject确实占用了AnyObject! 声明一个字符串!数组也无济于事 但是一样没有效果很好 那么我该如何显式包装东西?我真的不明白为什么我
我有一个像这样的json,它嵌套在其中一个字段中- 我创建了一个自定义类, 在我的服务类中,我正在读取json并将其映射到我的EmailTemplate类中,但是映射失败了。这里有什么可以用的? 例外情况: 我试着添加 但这也不起作用。