我是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":{ }
}
答案 0 :(得分:0)
那是因为offer会与你提供引用的Class进行比较,所以在这种情况下Json会出错,尝试使用这个Json它会起作用。
{
"offerInfo": {
"siteID": "1",
"language": "en_US",
"currency": "USD"
},
"offers": {
"siteID": " ",
"language": "",
"currency": " "
}
}
因为编译器无法在商品对象的旁边找到任何字段属性,所以它给出错误。
试试这个Json。