![](/img/trans.png)
[英]Java: Can I convert List of Object to List of String[] and vice versa?
[英]Convert Java object with embedded objects to a JSON with list of attributes and list of values and vice versa
在我的 Spring 项目中,我有几个对象应该序列化为特定的 JSON 格式。
public class Person {
private Integer id;
private String name;
private String height;
private Address address;
}
和
public class Address {
private String street;
private String city;
private String phone;
}
假设 Person.height 和 Address.phone 不应该出现在 JSON 中。 生成的 JSON 应如下所示
{
"attributes": ["id", "name", "street", "city"],
"values": [12345, "Mr. Smith", "Main street", "Chicago"]
}
我可以使用 ObjectMapper 和一些注释(如 @JsonProperty 和 @JsonUnwrapped)创建一个标准 JSON,其中我禁用了一些 SerializationFeatures。 但目前我无法创建这样的 JSON。
有没有一种简单的方法来创建这个 JSON? 回来的路(反序列化)会是什么样子?
Jackson 不以这种格式序列化地图是有充分理由的。 它的可读性较差,也更难正确反序列化。
但是,如果您只是创建另一个 POJO,那么很容易实现您想要做的事情:
public class AttributeList {
public static AttributeList from(Object o) {
return from(new ObjectMapper().convertValue(o, new TypeReference<Map<String, Object>>() {}));
}
public static AttributeList from(Map<String, Object> attributes) {
return new AttributeList(attributes);
}
private final List<String> attributes;
private final List<Object> values;
private AttributeList(Map<String, Object> o) {
attributes = new ArrayList<>(o.keySet());
values = new ArrayList<>(o.values());
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.