使用 Jackson 将 JSON 多个对象转换为单个 JSON [英] Convert JSON many objects to single JSON using Jackson

查看:56
本文介绍了使用 Jackson 将 JSON 多个对象转换为单个 JSON的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有不同级别字段的 JSON,所以我想转换为一个带有一级字段的单个 JSON,例如:

I have JSON, with differents levels field, so I want to convert to a single JSON with fields with one level for example:

{
  "prop1":"value1",
  "prob2":"value2",
  "prop3": {
     "prop4":"value4",
     "prop5":"value5"
  }
  ... many level fields
}  

结果

{
  "prop1":"value1",
  "prop2":"value2",
  "prop4":"value4",
  "prop5":"value5"
  .......
}

我正在使用带有注释的 Jackson @JsonProperty("field"),我对第一级字段没有问题,但我不知道如何访问字段到更多在 JSON 中,对于这个例子是 prop4prop5.

I'm using Jackson with annotation @JsonProperty("field"), I haven't problem wih fields of first level , but I don´t know how to access field where to into more inside JSON , for this example are prop4 and prop5.

推荐答案

JsonUnwrapped 是要使用的注释,它甚至适用于多级嵌套.例如:

JsonUnwrapped is the annotation to use, it even works for multi-level nesting. For example:

@RunWith(JUnit4.class)
public class Sample {

    @Test
    public void testName() throws Exception {
        SampleClass sample = new SampleClass("value1", "value2", new SubClass("value4", "value5", new SubSubClass("value7")));
        new ObjectMapper().writeValue(System.out, sample);
    }

    @JsonAutoDetect(fieldVisibility=Visibility.ANY)
    public static class SampleClass {
        private String prop1;
        private String prop2;
        @JsonUnwrapped
        private SubClass prop3;

        public SampleClass(String prop1, String prop2, SubClass prop3) {
            this.prop1 = prop1;
            this.prop2 = prop2;
            this.prop3 = prop3;
        }
    }
    @JsonAutoDetect(fieldVisibility=Visibility.ANY)
    public static class SubClass {
        private String prop4;
        private String prop5;
        @JsonUnwrapped
        private SubSubClass prop6;
        public SubClass(String prop4, String prop5, SubSubClass prop6) {
            this.prop4 = prop4;
            this.prop5 = prop5;
            this.prop6 = prop6;
        }

    }
    @JsonAutoDetect(fieldVisibility=Visibility.ANY)
    public static class SubSubClass{
        private String prop7;

        public SubSubClass(String prop7) {
            this.prop7 = prop7;
        }
    }
}

会产生

{"prop1":"value1","prop2":"value2","prop4":"value4","prop5":"value5","prop7":"value7"}

这篇关于使用 Jackson 将 JSON 多个对象转换为单个 JSON的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆