{
"name": "Edward",
"address": [
{
"streetName": "value1",
"city": "value2"
},
{
"streetName": "value3",
"city": "value4"
}
]
}
<root>
<name>Edward</name>
<streetName1>value1</streetName1>
<city1>value2</city1>
<streetName2>value3</streetName2>
<city2>value4</city2>
</root>
@JacksonXmlElementWrapper(useWrapping = false)
private List<Address> address = new ArrayList<>();
<root>
<name>Edward</name>
<address>
<streetName>value1</streetName>
<city>value2</city>
</address>
<address>
<streetName>value3</streetName>
<city>value4</city>
</address>
</root>
使用自定义序列化程序可以解决您的问题,因此,如果您有一个Person
类,如下所示:
@JacksonXmlRootElement(localName = "root")
@JsonSerialize(using = PersonSerializer.class)
public class Person {
private String name;
private List<Address> address = new ArrayList<>();
}
您可以构建一个自定义的PersonSerializer
serializer类,扩展JSONSerializer
类,如下所示:
public class PersonSerializer extends JsonSerializer<Person> {
@Override
public void serialize(Person t, JsonGenerator jg, SerializerProvider sp) throws IOException {
String streetName = "streetName";
String city = "city";
int nStreet = 1;
int nCity = 1;
jg.writeStartObject();
jg.writeStringField("name", t.getName());
for (Address address : t.getAddress()) {
jg.writeStringField(streetName + String.valueOf(nStreet++), address.getStreetName());
jg.writeStringField(city + String.valueOf(nCity++), address.getCity());
}
jg.writeEndObject();
}
}
然后,您可以像下面这样序列化Person
对象,获得预期的xml结果:
XmlMapper xmlMapper = new XmlMapper();
xmlMapper.enable(SerializationFeature.INDENT_OUTPUT);
//you already have your person object to serialize
String result = xmlMapper.writeValueAsString(person);
问题内容: 我正在使用Flickr API 。调用该方法时,默认的JSON结果为: 我想将此响应解析为Java对象: JSON属性应按以下方式映射: 不幸的是,我无法找到一种使用Annotations做到这一点的好方法。到目前为止,我的方法是将JSON字符串读入a 并从中获取值。 但是我认为,这是有史以来最不优雅的方式。有没有简单的方法,可以使用注释还是自定义反序列化器? 这对我来说将是很明显的,
有没有一种方法可以使用Jackson JSON处理器来执行自定义字段级别的序列化?例如,我想让 注意,age=25被编码为数字,而favoritenumber=123被编码为字符串。Jackson将编组为一个数字。在这种情况下,我希望将favoriteNumber编码为字符串。
我有下面的JSON,我正试图使用Jackson API反序列化它 我基本上需要一个附件类,它有一个AttachmentFile对象列表,如下所示: 如何使用自定义反序列化器实现这一点? 谢谢
问题内容: 有没有一种使用Jackson JSON Processor进行自定义字段级序列化的方法?例如,我想上课 序列化为以下JSON: 请注意,age = 25被编码为 数字, 而favoriteNumber = 123被编码为 string 。开箱即用的杰克逊将集结到一个号码。在这种情况下,我希望将favoriteNumber编码为字符串。 问题答案: 您可以实现自定义序列化器,如下所示:
我试图用Jackson库创建复杂类的对象。每个对象都有一个模式,反序列化器需要使用该模式来解释JSON。我的问题是如何向反序列化器提供模式? 反序列化程序扩展了类JSONDeserializer,该类具有无参数构造函数和必须重写的抽象方法反序列化(解析器、上下文)。我想改用另一种方法反序列化(解析器、上下文、值),其中值是部分构造的对象,其中包括模式。也就是说,反序列化方法可以调用value。sc
我试图创建会影响序列化值的自定义jackson注释。 意思是: 现在序列化对象X(10)将导致: 我怎样才能做到这一点?