![](/img/trans.png)
[英]Error parsing json to java object: 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.