本文介绍了使用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里面更多,这个例子是 prop4
和 prop5
。
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 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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!