杰克逊(Jackson):杰森(Json)具有到Java类的json数组,该数组具有另一个Java类的列表

阿比吉特·巴吉(Abhijit bagchi)

我正在使用杰克逊2.6.x,无法将json转换为java类

public class ParentTest {
@JsonProperty("ParentTest")
public List<Test> getTestList() {
    return testList;
}

public void setTestList(List<Test> testList) {
    this.testList = testList;
}

@JsonProperty("ParentTest")
List<Test> testList;

public ParentTest(List<Test> testList)
{   
    this.testList = testList;
}

public ParentTest()
{
    super();
    testList = new ArrayList<Test>();
}

public String toString()
{
    String r = "";
    if(testList!=null)
    for(Test t : testList)
    {
        r += "Test:"+t.field1+t.field2; 
    }
    else
        r = "null";
    return r;
}}

而用于列表的类是

@JsonRootName("Test")public class Test {
@JsonProperty("field1")
String field1;
@JsonProperty("field2")
String field2;
public Test(String field1,String field2)
{

    this.field1 = field1;

    this.field2 = field2;
}
public String getField1() {
    return field1;
}
public void setField1(String field1) {
    this.field1 = field1;
}
public String getField2() {
    return field2;
}
public void setField2(String field2) {
    this.field2 = field2;
}}

我的杰森是

{"ParentTest":   [{
"Test":{
        "field1":"t1",
        "field2":"t2"
         }
},
{
"Test":{
        "field1":"t3",
        "field2":"t4"
         }
}]}

并阅读它,我已经使用

public final class HandlerJacksonUtils {
private static ObjectMapper m = new ObjectMapper();
private static JsonFactory jf = new JsonFactory();

    public static <T> Object fromJson(String jsonAsString, Class<T> pojoClass) throws IOException {
        m.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        return m.readValue(jsonAsString, pojoClass);
    }}

进而

ParentTest pt = (ParentTest) HandlerJacksonUtils.fromJson(json, ParentTest.class);

ParentTest对象pt在System.out.print(pt.toString);上不打印任何内容;

zgmnkv

@JsonRootName不能单独工作,如javadocs中所述。您应该将其与SerializationFeature#WRAP_ROOT_VALUE和/或结合使用DeserializationFeature#UNWRAP_ROOT_VALUE但是它仅适用于要序列化/反序列化的根对象。因此,它不适用于您的情况。相反,您可以为Test

public class TestWrapper {

    @JsonProperty("Test")
    private Test test;

    public Test getTest() {
        return test;
    }

    public void setTest(Test test) {
        this.test = test;
    }
}

并使用它,而不是TestParentTest

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

杰克逊·杰森(Jackson Json)

杰克逊·杰森(Jackson Json)解析错误

杰克逊·杰森·马珀(Jackson Json Mapper):没有字段还是空白字段?

如何用Java创建具有多个数据类型的数组以在另一个类中使用

是否可以在JSON模式中具有动态大小的数组,该数组的大小基于另一个值

如何使用杰克逊mixins将json映射到具有不同结构的java对象

杰克逊(Jackson)反序列化变量为杰森(Json)字符串

杰克逊(Jackson):当类名更改并且类从另一个类继承时,序列化应该更改吗?

按照通用类,使用具有动态JSON密钥的杰克逊将通用POJO转换为JSON

具有构造函数的另一个类中的对象数组

具有来自另一个类的变量的对象数组

使用杰克逊或Gson解析具有数组且没有文件名的json

Java创建一个通用类,该通用类实现具有约束的另一个通用接口

杰克逊JSON Java嵌套对象和数组

杰克逊的平面 JSON 用于一个字段的类/记录

Java; JSON; 杰克逊; 从JSON数组中的列表中检索值

如何从具有上下文的另一个类调用函数(android,java)

使用杰克逊从json数组中检索一个值

杰克逊-最佳方式将Java列表写入JSON数组

如何从Java中私有的另一个类访问数组?

数组到PHP中具有空值的另一个数组

我试图将一个类的数组的值赋予另一个具有相同类的数组,这里有什么我遗漏的吗?

如果另一个列表项具有特定类,如何添加列表项?

将rand变量从一个类传递到另一个具有相同值的类

一个类中有两个具有相同名称的变量,这些变量扩展了Java中的另一个类

带有另一个类列表的JSON类

从Java中的另一个类获取数组

从Java中的另一个类存储数组

填充一个具有另一个类作为属性的类