2016-06-08 3 views
1

Привет Я пытаюсь проанализировать данные json из URL, используя базовый Auth. Данные поступают с сервера.Как разобрать URL формы данных JSON?

HttpHost target = new HttpHost(targetUrl, 443, "https"); 
    HttpHost proxy = new HttpHost(proxyHost, Integer.valueOf(proxyPort), "http"); 
    RequestConfig config = RequestConfig.custom().setConnectTimeout(5000).setConnectionRequestTimeout(5000) 
     .setProxy(proxy).setAuthenticationEnabled(true).build(); 
    HttpGet httpget = new HttpGet(targetURI + orderId + "/prod.json"); 
    httpget.setConfig(config); 
response = httpClient.execute(target, httpget); 
System.out.println(" Response ::" + EntityUtils.toString(response.getEntity())); 

Он отображает данные в формате JSON, как

[ 
    { 
    "id": 1, 
    "order_id": 100, 
    "product_id": 113, 
    "order_address_id": 1, 
    "name": "Paper 002", 
    } 
] 

И у меня есть Pojo класс этой also.But данных Json, когда я пытаюсь читать данные дисплея он кидает error.I использовать для Джексона чтение данных. Код для чтения данных.

String jsondata = EntityUtils.toString(response.getEntity()); 
       ObjectMapper objMapper = new ObjectMapper(); 
    ProDesc pd = objMapper.readValue(jsondata, ProDesc.class); 
    System.out.println("** ID " + pd.getId()); 

Итак, как я могу разобрать данные с помощью джексона? где у меня уже есть данные json, используя вышеприведенный код.

+0

Имеет ли ваш класс ProDesc имя атрибута так же, как и в Json? –

+0

Да У меня есть то же имя атрибута, что и jing @kedarkamthe – sudar

+0

Как выглядит ваш класс 'ProDesc'? – Narcis

ответ

2

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

Это, как я десериализации нечто подобное с Джексоном 2.1.4:

List<ProDesc> proDescList = objMapper.readValue(jsondata, objMapper.getTypeFactory().constructParametricType(List.class, ProDesc.class)); 

EDIT: Если ProDesc класс содержит только id элемент, вам нужно сказать Джексон игнорировать другие члены с аннотаций, как так:

import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 

@JsonIgnoreProperties(ignoreUnknown=true) 
public class ProDesc { 

    private int id; 

    public ProDesc(){} 

    public int getId() { 
     return id; 
    } 

    public void setId(int id) { 
     this.id = id; 
    } 
} 
+0

Работает спасибо @ Narcis. Но я немного меняю этот код. – sudar

+0

Я только что опубликовал код, который работал для меня в этой конкретной версии. Конечно, могут быть другие способы сделать это. Рад, что это помогло. – Narcis

0

Я использовал этот код, чтобы решить эту проблему

List<ProdDesc> proDescList = objMapper.readValue(jsondata, new TypeReference<List<ProDes>>() { }); 
for(ProDesc produ:proDescList) 
{ System.out.println(produ.getId()); } 
Смежные вопросы