我有JSON,具有不同级别的字段,因此我想转换为具有一个级别的字段的单个JSON,例如:
{ "prop1":"value1", "prob2":"value2", "prop3": { "prop4":"value4", "prop5":"value5" } ... many level fields }
结果
{ "prop1":"value1", "prop2":"value2", "prop4":"value4", "prop5":"value5" ....... }
我正在使用带有批注的Jackson @JsonProperty("field"),我对第一级字段没有问题,但是我不知道如何在JSON内部访问字段,例如prop4和prop5。
@JsonProperty("field")
prop4
prop5
JsonUnwrapped是要使用的注释,它甚至适用于多层嵌套。例如:
@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"}