如何解决如何使用 jackson java 向数组节点中的每个对象添加附加字段?
我有一个包含名称和评级两个字段的主人列表,在序列化到数组节点后,我需要为每个对象再添加一个字段 例如我有 json
[{"masterName":"Bruce","rating":30},{"masterName":"Tom","rating":25}]
我有 json 格式的 servisec 列表,看起来像那样
[{"masterName":"Bruce","services":["hair coloring","massage"]},"haircut"]}]
我需要它看起来像那样
[{"masterName":"Bruce","rating":30,"services":"hair coloring,massage"},"rating":25,haircut"}]
如何使用jackson来实现?
解决方法
我会这样处理。因为你想使用杰克逊。
首先,我将通过添加 Master
(它似乎是一个带有 services
的数组)来扩展 Strings
类。
所以这个类看起来像这样:
public class Master
{
private String masterName;
private int rating;
private List<String> services = new ArrayList<>(); // THE NEW PART
// Whatever you have else in your class
}
然后你可以得到你的 JSON 数组,为了简单起见,我假设它是一个 String
。将此数组序列化为包含 Master
对象的数组,然后您可以添加上述服务。
例如
String yourJsonString = "[{\"masterName\":\"Bruce\",\"rating\":30},{\"masterName\":\"Tom\",\"rating\":25}]";
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
List<Master> theListOfMasters = new ArrayList<>();
// Read them and put them in an Array
Master[] mastersPlainArr = mapper.readValue(yourJsonString,Master[].class);
theListOfMasters = new ArrayList(Arrays.asList(mastersPlainArr));
// then you can get your masters and edit them..
theListOfMasters.get(0).getServices.add("A NEW SERVICE...");
// And so on...
// Then you can turn them in a JSON array again:
String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(theListOfMasters);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。