我是Java新手,使用下面的代碼來解析JSON,但是當offer {}節點帶有空值時,我得到java.lang.NullPointerException錯誤,這是空值在我的代碼公共類。JSON解析中的錯誤java.lang.NullPointerException
如何處理空的JSON節點/鍵?
代碼能夠解析JSON,如果「提供」如「信息」下有數據,但JSON返回時出現空異常錯誤,如下所示爲空。
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 "";
}
樣品JSON:不工作的這其中「報價」返回空
{
"offerInfo":{
"siteID":"1",
"language":"en_US",
"currency":"USD"
},
"offers":{ }
}
正在使用包「javax.json」中的類嗎? – VVJ
給我們堆棧跟蹤,它可能有助於更快地解決這個問題 – Phantomazi
@VVJ,不確定,因爲我對Java很陌生並試圖修改現有代碼,但是我可以看到正在使用GSON包。 – rkj