Gson Parser无法从数组创建对象

时间:2015-07-07 15:56:42

标签: java json gson pojo

我正在尝试编写一个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
}

1 个答案:

答案 0 :(得分:1)

PriceUpdateTypeDTO 中的ArrayList名称需要与JSON中的数组具有相同的名称:

更改

 private ArrayList<PriceUpdateItemDTO> items;

 private ArrayList<PriceUpdateItemDTO> priceUpdate;

反之亦然(将JSON中数组的名称更改为“items”)