我正在尝试编写一个Gson解析器来从JMS消息创建POJO。 消息以文本格式提供,格式如下:
{
"priceUpdate":[
{
"symbol":"EUR/USD",
"entryType":"0",
"price":"1.09286"
},
{
"symbol":"EUR/USD",
"entryType":"1",
"price":"1.0929"
}
]
}
我正在尝试为Array中的每个项创建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();
}
}
在Tomcat服务器上运行时,我得到一个NullPointer
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
}
答案 0 :(得分:1)
PriceUpdateTypeDTO 中的ArrayList名称需要与JSON中的数组具有相同的名称:
更改
private ArrayList<PriceUpdateItemDTO> items;
到
private ArrayList<PriceUpdateItemDTO> priceUpdate;
反之亦然(将JSON中数组的名称更改为“items”)