微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 jackson java 向数组节点中的每个对象添加附加字段?

如何解决如何使用 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 举报,一经查实,本站将立刻删除。