JSON解析中的java.lang.NullPointerException错误

时间:2015-09-17 14:02:02

标签: java json

我是Java的新手,并使用下面的代码来解析JSON,但当来自offers {}节点的空值(我的代码中是公共类)时,我收到java.lang.NullPointerException错误。

如何处理空JSON节点/键??

如果" offer"下有数据,代码可以解析JSON。喜欢" info"但是当JSON返回并且为空时退出时出现NULL异常错误,如下所示。

ERROR MSG:

Exception in thread "api_temp_1.dat" java.lang.NullPointerException
at com.t.dw.dl.api.data.Pkg_Data.getCount(Pkg_Data.java:57)
at com.t.dw.dl.api.DataRetrieveRunnable.run(DataRetrieveRunnable.java:185)

从显示的错误行中提取代码

public long getCount() {
        if (offers != null)
          return offers.getPkg().size();
        return 0;
      }

    **Code from com.t.dw.dl.api.DataRetrieveRunnable.run(DataRetrieveRunnable.java:185)**
          try
          {
            Pkg_Data dls = parseResult(result);
            if (dls.getCount() > 0)
            {
              fw.write(deals.writeResults(fields, delimiter));
              threadStats.increment(Stats2.COUNT_OF_ROWS_PROCESSED,
                  dls.getCount());
            }
          }

    Parsing code:
      private Pkg_Data parseResult( String result ) throws JsonParseException {
        JsonParser parser = new JsonParser();
        JsonElement jo = parser.parse(result);
        Gson gson = new Gson();
        Pkg_Data ehw = gson.fromJson(jo, Pkg_Data.class);
        return ehw;
      }

CODE:

  import java.util.ArrayList;

public class offers
{
  private ArrayList<PkgData> pkg;

  class Pkgdata
  {
    Info Info;

    class Info
    {
      String Id;
      String Url;

    }
    public String getId() {
      if (Info != null && Info.Id != null)
        return Info.Id;
      return "";
    }

SAMPLE JSON:不适合这个地方&#34;提供&#34;返回空

{  
       "offerInfo":{  
          "siteID":"1",
          "language":"en_US",
          "currency":"USD"
       },
       "offers":{ }
        }

1 个答案:

答案 0 :(得分:0)

那是因为offer会与你提供引用的Class进行比较,所以在这种情况下Json会出错,尝试使用这个Json它会起作用。

{
  "offerInfo": {
    "siteID": "1",
    "language": "en_US",
    "currency": "USD"
  },
  "offers": {
    "siteID": " ",
    "language": "",
    "currency": " "
  }
}

因为编译器无法在商品对象的旁边找到任何字段属性,所以它给出错误。

试试这个Json。