繁体   English   中英

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

[英]Error java.lang.NullPointerException in JSON parsing

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

如何处理空的JSON节点/密钥?

如果“报价”(例如“ info”)下有数据,该代码可以解析JSON,但当JSON返回且为空时,将以NULL异常错误退出,如下所示。

错误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;
      }

码:

  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 "";
    }

示例JSON:不适用于“要约”返回为空的情况

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

那是因为报价与您提供的要参考的Class进行了比较,因此在这种情况下,Json会出错,尝试使用此Json即可。

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

由于编译器无法在您的要约对象旁边找到任何字段属性,因此它给出了错误。

试试这个杰森。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM