如何在Android上捕获JSON null结果?

时间:2016-05-02 20:32:29

标签: android json jsonobject

我有一个Android应用程序,它调用REST Web服务并获得JSON答案。 当我输入错误的参数时,我可以毫无问题地捕获错误,但有时JSON上的某些结果为空。我怎么能抓住这种情况呢?

我的Android代码:

try {
    JSONObject jsonObj = new JSONObject(results);

    JSONArray result = jsonObj.getJSONArray("result");

    for (int i = 0; i < result.length(); i++) {
        JSONObject c = result.getJSONObject(i);

        String string04 = c.getString("string04");
        String string05 = c.getString("string05");

        TextView txt1 = (TextView)findViewById(R.id.textView1);
        txt1.setText(string04);

        TextView txt2 = (TextView)findViewById(R.id.textView2);
        txt2.setText(string05);


        JSONArray dest = c.getJSONArray("dest");

        for (int o = 0; o < dest.length(); o++) {

            JSONObject d = dest.getJSONObject(o);

            JSONArray pred = d.getJSONArray("pred");

            for (int u = 0; u < pred.length(); u++) {

                JSONObject e = pred.getJSONObject(u);

                String string13 = e.getString("string13");
                TextView txt4 = (TextView)findViewById(R.id.textView4);
                txt4.setText(string13);
            }
        }
    }   
} catch (JSONException e) {
    e.printStackTrace();
    Log.d("error", e.getMessage());
}

一个好的JSON结果是这样的:

{
    "result": [{
        "string01": "104",
        "string02": "104 - blablabla",
        "string03": "104",
        "string04": "blobloblo",
        "string05": "blablabla",
        "dest": [{
            "pred": [{
                "time": 1461348846,
                "sec": 102,
                "min": 1,
                "string11": "514-String",
                "string12": "Some String",
                "string13": "Some other String",
                "number": 0
            }]
        }]
    }]
}

但有时,当没有数据显示时,我会得到这样的结果:

{
    "result": [{
        "string01": "104",
        "string02": "104 - blablabla",
        "string03": "104",
        "string04": "blobloblo",
        "string05": "blablabla",
        "dest": [{"pred":[]}]
    }]
}

1 个答案:

答案 0 :(得分:0)

JSON解析器具有“opt”方法,如果匹配条件没有对象,则返回NULL。这些方法与get方法类似。

例如:getJSONObject("column")如果没有“throw”的值,则会exception column

optJSONObject("column")只会返回NULL值,如果它不存在的话。我个人觉得“opt”方法在处理运行时可能缺少值的JSONs时很方便。