2014-01-24 3 views
0

Я пытаюсь реализовать простое приложение Java с командной строкой, которое запрашивает некоторые ресурсы из веб-службы RESTful. Есть ли способ автоматически десериализовать ответы JSON в мои классы моделей?Как десериализовать ответ JSON от веб-службы RESTful?

В Objective-C имеется ключевое значение-кодирование, которое позволяет создавать объекты, получать доступ к переменным и методам посредством их строкового представления. Это можно использовать для автоматического десериализации документа XML или JSON в объекты, и это делается некоторыми сторонними библиотеками, такими как RestKit.

Есть ли что-то подобное для Java? Я знаю, что я мог бы использовать парсер JSON, чтобы получить массив и отобразить представление документа, а затем сам создать объекты модели, но мне было интересно, можно ли это автоматизировать?

Вчера я провел весь вечер в поисках библиотек, учебных пособий и руководств. Все они либо объясняли, как создать веб-сервис RESTful, либо, если это клиентское приложение, все, что они когда-либо делали, это загрузить JSON и распечатать его до системы.

+0

Вот пример о десериализации JSON строку, используя Джексон: http://www.mkyong.com/java/how-to-convert-java-object-to -из-JSON-джексон /. Вы можете автоматизировать его, если вы используете другие фреймворки, такие как Spring или Mule (или другие, которые могут сделать это для вас автоматически). В противном случае вам следует больше объяснить вашу конкретную проблему. –

+0

Другим популярным является [GSON] (http://www.javacodegeeks.com/2011/01/android-json-parsing-gson-tutorial.html), и есть [много больше] (http://stackoverflow.com/questions/338586/a-better-java-json-library) – zapl

+0

Многие люди из Java даже не знают, как бороться с JSON «в сыром» - они знают только эти фреймворки. –

ответ

1

Jackson Посмотрите в

С этим, вы можете создать класс, который «соответствует» вашей структуре данных в формате JSON, и Джексон будет автоматически создать экземпляр и заполнить класс для вас. Затем вы уже интегрированы с остальной частью своего Java-приложения.

1

Вот пример, используя библиотеку XStream: (http://x-stream.github.io/json-tutorial.html)

package com.thoughtworks.xstream.json.test; 

import com.thoughtworks.xstream.XStream; 
import com.thoughtworks.xstream.io.json.JettisonMappedXmlDriver; 

public class ReadTest { 

    public static void main(String[] args) { 
     String json = "{\"product\":{\"name\":\"Banana\",\"id\":123" 
      + ",\"price\":23.0}}"; 

     XStream xstream = new XStream(new JettisonMappedXmlDriver()); 
     xstream.alias("product", Product.class); 
     Product product = (Product)xstream.fromXML(json); 
     System.out.println(product.getName()); 
    } 

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