我想使用JSON导入数据,但有些数据为null,如下所示:
[
{
"atasan": "name ",
"kode_agen": "number",
"jenis": "Regional",
"no_aaji": "number* ",
"nama_agen": "name"
},
{
"atasan": "name ",
"kode_agen": "number"
},
{
"atasan": "name ",
"kode_agen": "number",
"jenis": "Agency",
"nama_agen": "name"
}
]
我的问题是处理这个空数据的正确方法是什么?这是我的源代码:
try {
JSONParser j = new JSONParser();
JSONArray jsonArray = j.takeJson(url);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject c = jsonArray.getJSONObject(i);
HashMap<String, String> map = new HashMap<String, String>();
map.put("atasan", c.get("atasan").toString());
map.put("kode_agen", c.get("kode_agen").toString());
map.put("jenis", c.get("jenis").toString());
map.put("no_aaji", c.get("no_aaji").toString());
map.put("nama_agen", c.get("nama_agen").toString());
AgenList.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
}
我希望有人能帮助我解决这个问题,谢谢。
答案 0 :(得分:2)
您可以执行以下操作:
JSONObject c = jsonArray.getJSONObject(i);
if (c.has("atasan"))
map.put("atasan", c.get("atasan").toString());
if (c.has("nama_agen"))
map.put("nama_agen", c.get("nama_agen").toString());
答案 1 :(得分:0)
如果存在空值,则取决于您期望发生的事情。但了解正在发生的事情也很重要。当您调用c.get(“atasan”)并且它返回null时,您无法继续.toString()调用。这与说null.toString()...就是不能这样做。
所以只需检查null然后决定该怎么做。
如果要将json对象中的字段/属性设为null,则要将null或“”放入映射中,您可以执行类似Naveen的操作或:
map.put("atasan", c.has("atasan") ? c.get("atasan").toString() : "");
或(如果你想要null)
map.put("atasan", c.has("atasan") ? c.get("atasan").toString() : null);
答案 2 :(得分:0)
您想访问可能存在或不存在的参数,但这不应终止代码。因此,我们需要使用if和else语句。
在if语句中,可以使用has()来检查参数是否存在。
如果has()不起作用,则可以使用isNULL()或类似的方法尝试进行空检查
if(c!=null&&c.get("kode_agen")!=null) map.put("kode_agen",c.get("kode_agen").toString());
检查值是否为空。
在某些情况下,JSON会像这样的代码存储值
"kode_agen":null
那么您需要忽略此类值,因为这可能会引发错误(如null值)
为此,您可以编写,
if (!c.get("kode_agen").toString().equalsIgnoreCase("null")
因此,可以说,if和else中的条件完全取决于JSON
JSONObject c = jsonArray.getJSONObject(i);
HashMap<String, String> map = new HashMap<String, String>();
if(c.has("atasan"))
map.put("atasan", c.get("atasan").toString());
else
map.put("atasan","null");
if(c.has("kode_agen"))
map.put("kode_agen", c.get("kode_agen").toString());
else
map.put("kode_agen","null");
if(c.has("jenis"))
map.put("jenis", c.get("jenis").toString());
else
map.put("jenis","null");
if(c.has("no_aaji"))
map.put("no_aaji", c.get("no_aaji").toString());
else
map.put("no_aaji","null");
if(c.has("nama_agen"))
map.put("nama_agen", c.get("nama_agen").toString());
else
map.put("nama_agen","null");
AgenList.add(map);