2012-01-30 3 views
2

Я использую restTemplate, чтобы сделать rquest для сервлета, который возвращает очень простое представление объекта в json.Лучший способ сопоставления json с объектом Java

{ 
    "id":"SomeID" 
    "name":"SomeName" 
} 

И у меня есть DTO с этими двумя полями и соответствующими сеттерами и геттерами. Я хотел бы знать, как создать объект, используя этот ответ json без необходимости «разбора» ответа.

+0

Как насчет того, чтобы мы отредактировали заголовок, чтобы удалить слово «Лучшее» и добавить «Хорошо». – Gus

+0

Прошу прощения за то, как я сформулировал вопрос. Я просто хотел простой способ сопоставить json с объектом, учитывая, что мне никогда не приходилось разбираться с json раньше. Ответ на восприятие был тем, что я имел в виду. –

+3

Для меня это лучший результат google для «map json to object java». Дубликат связан 404s. Плохое шоу. – matt

ответ

6

Лично я бы рекомендовал Джексон. Его довольно легкий, очень быстрый и требует очень небольшой конфигурации. Вот пример десериализации:

@XmlRootElement 
public class MyBean { 
    private String id; 
    private String name; 

    public MyBean() { 
     super(); 
    } 

    // Getters/Setters 
} 


String json = "..."; 
MyBean bean = new ObjectMapper().readValue(json, MyBean.class); 
2

http://code.google.com/p/json-simple/ приятный и легкий для этого

+0

И как это «лучше», чем дюжина других? –

+0

«Лучше» всегда зависит от того, что вы цените. Со своей стороны, я большой поклонник того факта, что он не имеет внешних зависимостей, и в первый раз, когда я нашел его, я смог заставить его работать очень быстро, основываясь на их примере. Мне нравится, потому что это то, что он говорит, что это просто ... – Gus

+0

Это то, что я пытался сделать; вопрос OP не является конструктивным в отношении SO-рекомендаций. Здесь нет «правильного» ответа. –

3

Вот пример использования Google Gson.

public class MyObject { 

    private String id; 
    private String name; 

    // Getters 
    public String getId() { return id; } 
    public String getName() { return name; } 
} 

А для доступа к нему:

MyObject obj = new Gson().fromJson(jsonString, MyObject.class); 
System.out.println("ID: " +obj.getId()); 
System.out.println("Name: " +obj.getName()); 

Что касается лучше образом, хорошо это субъективно. Это один способ, которым вы можете выполнить то, что вам нужно.

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