2015-07-07 1 views
1

Я пытаюсь написать парсер Gson для создания POJO из сообщений JMS. Сообщения доставляются в текстовом формате в следующем стиле:Gson Parser не может создавать объекты из массива

{ 
"priceUpdate":[ 
    { 
    "symbol":"EUR/USD", 
    "entryType":"0", 
    "price":"1.09286" 
    }, 
    { 
    "symbol":"EUR/USD", 
    "entryType":"1", 
    "price":"1.0929" 
    } 
] 
} 

Я пытаюсь создать объекты Pojo для каждого элемента в массиве, но код не выполняется при попытке разобрать:

public void consumeMessage(String text) { 
    try { 
     PriceUpdateTypeDTO updates = gson.fromJson(text,PriceUpdateTypeDTO.class); 
     for (PriceUpdateItemDTO u : updates.items) { 
      if (u.getEntryType() == "0") { 
       connectedMarket.setBidPrice(Double.parseDouble(u.getPrice())); 
      } else { 
       connectedMarket.setOfferPrice(Double.parseDouble(u.getPrice())); 
      } 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

Я получаю NullPointer при запуске на сервере Tomcat

java.lang.NullPointerException 
at com.markets.ticker.PriceStreamClient.consumeMessage(PriceStreamClient.java:25) 

Вот мои POJO классы:

public class PriceUpdateTypeDTO { 


    private ArrayList<PriceUpdateItemDTO> items; 
    //getter & setter 
} 


public class PriceUpdateItemDTO { 

    private String symbol; 

    private String entryType; 

    private String price; 
    //getters & setters 
} 
+2

'priceUpdate' vs' items' –

+0

ahhhh так очевидно !!!! Спасибо! –

ответ

1

Название вашей ArrayList в PriceUpdateTypeDTO должен иметь такое же имя, как массив в формате JSON:

Изменение

private ArrayList<PriceUpdateItemDTO> items; 

в

private ArrayList<PriceUpdateItemDTO> priceUpdate; 

или вице- versa (измените имя массива в JSON на «items»)

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