在JAVA中解析JSON无法访问值

时间:2014-04-29 05:53:36

标签: java json

我有一个JSON字符串,U想要获取名称并添加字段。我试过使用几个库并遵循许多教程,但是没有成功。

我的问题是我有几个阵列......

inputLine =
{"posts":[
    {"post":{
        "name":"name1",
        "add":"add1"}},
    {"post":{
        "name":"name2",
        "add":"add2"}}
    ]
}
JSONObject obj_posts = new JSONObject(inputLine);
JSONArray menuitemArray = obj_posts.getJSONArray("posts");
JSONObject obj_post = new JSONObject(menuitemArray.getJSONObject(0).toString());
JSONObject menuitem = obj_post.getJSONObject("post");
JSONArray obj_post1 = menuitem.names();

此时我只能访问密钥名称并添加,而不是值。

3 个答案:

答案 0 :(得分:1)

JSONObject obj_posts = new JSONObject(inputLine);
JSONArray menuitemArray = obj_posts.getJSONArray("posts");
JSONObject obj_post = menuitemArray.getJSONObject(0);
JSONObject menuitem = obj_post.getJSONObject("post");
String postName = menuItem.getString("name");
String postAdd = menuItem.getString("add");

答案 1 :(得分:0)

以下代码应该有效:

    System.out.println(menuitem.get(obj_post1.getString(0)));//Output name1
    System.out.println(menuitem.get(obj_post1.getString(1)));//Output add1  

答案 2 :(得分:0)

您需要导入“org.json.JSONArray”,“org.json.JSONException”,“org.json.JSONObject”

还抛出JSONException。

String obj_post1_name = "";
String obj_post1_add = "";
String obj_post2_name = "";
String obj_post2_add = "";
String inputLine =
        " {\"posts\":[{\"post\":{\"name\":\"name1\",\"add\":\"add1\"}},{\"post\":{\"name\":\"name2\",\"add\":\"add2\"}}]}";

        JSONObject obj_posts = new JSONObject(inputLine);
        JSONArray menuitemArray = obj_posts.getJSONArray("posts");
        JSONObject obj_post1 =(menuitemArray.getJSONObject(0));
        JSONObject obj_post2 =(menuitemArray.getJSONObject(1));
        JSONObject menuitem = obj_post1.getJSONObject("post");
        JSONObject menuitem2 = obj_post2.getJSONObject("post");
        obj_post1_name= menuitem.getString("name");
        obj_post1_add= menuitem.getString("add");
        obj_post2_name= menuitem2.getString("name");
        obj_post2_add= menuitem2.getString("add");

或者你可以在之后使用循环:

JSONArray menuitemArray = obj_posts.getJSONArray("posts");
JSONObject obj_posts;
JSONObject menuitem;
for(int i=0;i<menuitemArray.length();i++){
    obj_posts= menuitemArray.getJSONObject(i);
    menuitem = obj_post1.getJSONObject("post");
    menuitem.getString("name");
    menuitem.getString("add");
}