从字符串解析JSON对象

时间:2018-09-20 06:04:28

标签: android json string

我正在尝试使用以下代码在文章结尾处从数据中解析json对象,但我似乎在将初始字符串转换为JSON以及在“ feed”和“进入”。

key1:
    protocol1
key2:
    {'name': 'user.name', 'value': 'user@EXAMPLE123.COM, user@EXAMPLE456.COM'}
    {'name': 'user.shortname', 'value': 'user'}
    {'name': 'proxyuser.hosts', 'value': '*'}
    {'name': 'kb.groups', 'value': ', hadoop, localusers, users'}
    {'name': 'proxy.groups', 'value': 'group1, group2, group3, group4, group5'}
    {'name': 'internal.user.groups', 'value': 'group1, group2'}
    {'name': 'internal.groups', 'value': 'none'}

数据字符串:

protected void JSONparse(String result) {
    //parse JSON data
    try {
        JSONObject reader = new JSONObject(result);
        JSONObject head = reader.getJSONObject("feed").getJSONObject("entry").getJSONObject(result);
        JSONArray jArray = new JSONArray(head);
        for(int i=0; i < jArray.length(); i++) {
            JSONObject jObject = jArray.getJSONObject(i);
            String name = jObject.getString("name");
            String location = jObject.getString("location");
            String contact = jObject.getString("contact");
            Toast toast = Toast.makeText(this, name+" "+location+" "+contact, Toast.LENGTH_SHORT);
            toast.show();

        } // End Loop

    } catch (JSONException e) {
        Log.e("JSONException", "Error: " + e.toString());
    } // catch (JSONException e)

}

2 个答案:

答案 0 :(得分:1)

看起来像JSON不正确。 即使JSON是正确的-“ entry”是一个数组,而不是一个对象。尝试以下代码:

protected void JSONparse(String result) {
    //parse JSON data
    try {
        JSONObject reader = new JSONObject(result);
        JSONArray jArray = reader.getJSONObject("feed").getJSONArray("entry");
        for(int i=0; i < jArray.length(); i++) {
            JSONObject jObject = jArray.getJSONObject(i);
            String name = jObject.getString("gsx$name");
            String location = jObject.getString("gsx$location");
            String contact = jObject.getString("gsx$contact");
            Toast toast = Toast.makeText(this, name+" "+location+" "+contact, Toast.LENGTH_SHORT);
            toast.show();

        } // End Loop

    } catch (JSONException e) {
        Log.e("JSONException", "Error: " + e.toString());
    } // catch (JSONException e)

}

答案 1 :(得分:0)

尝试首先修复您的json字符串。

最简单的方法是使用https://jsoneditoronline.org/等网页……

或者只是在Android Studio中创建your_file_name.json文件,然后让lint向您显示错误在哪里。