【问题标题】:How to get name from this JSON data using JAVA如何使用 JAVA 从此 JSON 数据中获取名称
【发布时间】:2017-10-17 08:45:58
【问题描述】:
[
  {
    "orderDetails": [
        {
            "account_name": "akhil_kotak",
        }
     ]
  }
]

如何从这个 json 中获取账户名,我试过这样做

String response = new String(responseBody);
                    //ON SUCCESS GETS JSON Object
                    JSONArray array = new JSONArray(response);
                    JSONObject obj = 
array.getJSONObject(0).getJSONArray("orderDetails").getJSONObject(0);

                    txt_accountName.setText(obj.getString("account_name"));

如果有人能帮忙,那就太好了。

谢谢

【问题讨论】:

标签: java android json


【解决方案1】:

您的JSON 无效。

你可以改成这个。

[
  {
    "orderDetails": [
        {
            "account_name": "akhil_kotak"
        }
     ]
  }
]

只需将 "account_name": "akhil_kotak" , 更改为 "account_name": "akhil_kotak" 即可。

只需删除 JSON 中的逗号即可。

试试这个。

try {
        JSONArray jsonArray = new JSONArray(response);
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject jsonObject = jsonArray.getJSONObject(i);
            JSONArray orderDetails = jsonObject.getJSONArray("orderDetails");
            for (int j = 0; j < orderDetails.length(); j++) {
                JSONObject jsonObject2 = orderDetails.getJSONObject(j);
                String account_name = jsonObject2.getString("account_name");
                txt_accountName.setText(account_name);
            }
        }
} catch (JSONException e) {
        e.printStackTrace();
}

【讨论】:

  • 没有还是什么都没有
  • 现在手动解析 Json 看起来很痛苦。改为创建一个类并尝试使用 Gson
  • 是的。很简单。@user2661298
  • 这个 json 格式错误。顺便说一句
【解决方案2】:

如果您使用的是 Jackson 2 .. 下面的作品

String jsonString = "[{\"orderDetails\": [{\"account_name\": \"akhil_kotak\",}]}]";

ObjectMapper mapper = new ObjectMapper();
JsonNode jnNode= mapper.readTree(jsonString);
Sting accName=jnNode.get("orderDetails").get("account_name").asText();
}

【讨论】:

    【解决方案3】:

    您的 JSON 无效。 删除逗号!然后:

    创建一组类并使用 Gson!

    将此行添加到 build.gradle 中的依赖项:

    dependencies {
        compile 'com.google.code.gson:gson:2.8.2' //add this line
    }
    

    创建一组类:

    class SomeListItem {
        @SerializedName("orderDetails")
        public List<InnerListItem> mOrderDetails;
    }
    
    class InnerListItem {
        @SerializedName("account_name")
        public String mAccountName;
    }
    

    并像这样使用它们:

    String jsonOutput = "[\n" +
            "  {\n" +
            "    \"orderDetails\": [\n" +
            "        {\n" +
            "            \"account_name\": \"akhil_kotak\"\n" +
            "        }\n" +
            "     ]\n" +
            "  }\n" +
            "]";
    Gson gson = new Gson();
    Type listType = new TypeToken<List<SomeListItem>>(){}.getType();
    List<SomeListItem> parsedJson = gson.fromJson(jsonOutput, listType);
    
    String accountName = parsedJson.get(0).mOrderDetails.get(0).mAccountName;
    

    【讨论】:

      【解决方案4】:

      试试这个。我正在使用 org.json.simple 库。

        String str="[{\"orderDetails\": [{\"account_name\": \"akhil_kotak\",}]}]";
                  JSONParser parser=new JSONParser();
                  JSONArray array=(JSONArray) parser.parse(str);
                  JSONObject obj=(JSONObject) array.get(0);
                  JSONArray nestedArray=(JSONArray) obj.get("orderDetails");
                  System.out.println("output: "+nestedArray.get(0).get("account_name"));
      

      一切正常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-05
        • 2011-10-30
        • 2020-10-03
        • 1970-01-01
        • 1970-01-01
        • 2018-03-23
        • 2015-07-22
        • 2018-06-01
        相关资源
        最近更新 更多