ObjectMapper将json映射到Object

时间:2016-02-14 22:03:03

标签: java json datamapper

我有一个对象组织。

Class Phone{
    String type;
    String number;

    String getType(){
        return type;
    }

    String setType(String t){
        type = t;
    }

    String getNumber(){
        return number;
    }

    String setNumber(String n){
        number = n;
    }
}

Class Organization() {
    String orgName;
    Phone[] phone;

    String getOrgName(){
        return orgName;
    }

    String setOrgName(String name){
        orgName = name;
    }

    String getPhone(){
        return phone;
    }

    String setPhone(Phone[] phone){
        phone = phone;
    }
}

我正在尝试将Json转换为此Object。

{   
"OrgName": "Some Org", 
"phone": [
    { "type": "Phone 1", "number": "555 555-1234" },
    { "type": "Phone 2", "number": "555 555-4567" }
]
}

我对orgName有效的函数如下:

private static Object jsonToObject(String json, Class<?> c) throws Exception {
    ObjectMapper objectMapper = new ObjectMapper();
    Object obj = null;
    try {
        obj = objectMapper.readValue(json, clazz);
    } catch (Exception e) {
        System.out.println("exception " + e);
    }
    return obj;
}

我称之为:组织org =(组织)jsonToObject(json,Organization.class);

异常org.codehaus.jackson.map.exc.UnrecognizedPropertyException:无法识别的字段&#34;电话&#34;

2 个答案:

答案 0 :(得分:0)

首先,您应该在类定义中使用public访问修饰符。接下来,要将Java对象转换为JSON对象,应使用 java jackson 库。像这样:

String jsonString = "{'OrgName': 'Some Org', 'phone':[{'type': 'Phone1','number': '555 555-1234'}, {'type': 'Phone 2', 'number': '555 555-4567' }]}";
Organization organization =  mapper.readValue(jsonString, Organization.class);

此外,杰克逊有一些有用的注释,你可以自己定制它。它为您的学习提供了良好的互联网资源。

有关杰克逊的更多信息,您可以使用以下链接:

How to convert Java object to / from JSON (Jackson)

Java Jackson tutorial

答案 1 :(得分:0)

班级组织{//}

课程电话{//}

看起来更像是java。