2016-02-14 4 views
1

У меня есть объект Organization.ObjectMapper для сопоставления json объекту

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 в этот объект.

{ 
"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; 
} 

Я называю это: Организация орг = (организация) jsonToObject (JSON, Organization.class);

исключение org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Непризнанный поле «Телефон»

+1

какой язык вы используете? 'Class Organization() {' не является Java. () в декларации имени класса и 'Class' вместо' class' – AGV

ответ

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

0

класс Организация {//}

класса Телефон {//}

Выглядит больше как java.

Смежные вопросы