2016-11-22 4 views
0

Допустим, у меня есть объект, как этотДжексон отображения JSON на объекты

{ 
    first: "value", 
    second: "value", 
    third: { 
    first: "first value third", 
    second: "second value third", 
    fourth: { 
     first: "second nested object", 
     second: "second nested object" 
    }, 
    fifth: { 
     first: "another second nested object", 
     second: "another second nested object" 
    } 
    }, 
    sixth: { 
    first: "value", 
    second: "value" 
    } 
} 

Я использую класс RestTemplate для извлечения JSON из URL, как это:

RestTemplate rest = new RestTemplate(); 
String result = rest.getForObject(ENDPOINT_URL, String.class); 

после того, что я хотел бы, чтобы бросить строка JSON к объекту с помощью объекта JACKSON Mapper

import com.fasterxml.jackson.databind.ObjectMapper 

проходящего класса сущностей в качестве второго параметра

ObjectMapper mapper = new ObjectMapper(); 
object = mapper.readValue(result, ExampleJson.class); 

Вопрос в том, как я должен писать объект ExampleJson для обработки показанного json? Я пробовал с таким классом, но, похоже, это не сработало.

public class ExampleJson { 
    private String first; 

    private String second; 

    private Third third; 

    private Sixth sixth; 

    // Getters && Setters 

    public static class Third { 
    private String first; 

    private String second; 

    private Fourth fourth 

    private Fifth fifth 

    // Getters && Setters 

    private Fourth { 
     private String first; 

     private String second; 

     // Getters && Setters 
    } 

    private Fifth { 
     private String first; 

     private String second; 

     // Getters && Setters 
    } 
    } 

    public static class Sixth { 
    private String first; 

    private String second; 

    // Getters && Setters 
    } 

} 

Я получаю исключение вроде этого:

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: 
Unrecognized field "fourth" 
+1

Является ли объект всегда в этом же формате или он может изменяться динамически? –

+1

Внутренние классы должны быть статическими или другим способом для их создания, например, нет конструктора с нулевым аргументом или каких-либо аннотаций. http://www.cowtowncoder.com/blog/archives/2010/08/entry_411.html – StackTraceYo

+0

Аннотировать класс, который вы десериализируете с помощью '@JsonIgnoreProperties (ignoreUnknown = true)' – teppic

ответ

0

FYI

@JsonIgnoreProperties(ignoreUnknown = true) 

решил проблему!

Спасибо.

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