解析JSON以获取名称'从一个数组

时间:2015-01-19 01:08:46

标签: java android json

我正试图从我收录的JSON片段中获取“名称”。我尝试过以下但是我期待的东西永远不会被抓住。

编辑:'output'是完整的JSON字符串,以防它尚未被理解;)

JSONObject result = null;
JSONArray data = null;
try {
    try {result = new JSONObject(output);} catch (JSONException e) {e.printStackTrace();}

try {
    data = result.getJSONArray("data");

                for(int a=0;a<data.length();a++){
                    System.out.println(result.getJSONObject(String.valueOf(a)).getString("name"));//getJSONObject("results")
                }

以下是我正在尝试使用的JSON代码段:

{
    "code": 200,
    "status": "Ok",
    "copyright": "© 2015 MARVEL",
    "attributionText": "Data provided by Marvel. © 2015 MARVEL",
    "attributionHTML": "<a href=\"http://marvel.com\">Data provided by Marvel. © 2015 MARVEL</a>",
    "etag": "b130a8b7af591e4e7ca078753f9c5c8a76e55e5d",
    "data": {
        "offset": 0,
        "limit": 20,
        "total": 1485,
        "count": 20,
        "results": [
            {
                "id": 1011334,
                "name": "3-D Man",
                "description": "",
                "modified": "2014
                .
                .
                .
                .
                .
                .
                .
                .
                .
                .

3 个答案:

答案 0 :(得分:2)

为了让您入门,&#34;数据&#34;指向JSON对象,而不是数组。所以它应该是:

data = result.getJSONObject("data");

然后,&#34;结果&#34;指向JSON数组:

JSONArray results = data.getJSONArray("results"); 

然后你可以试试你的循环。你不应该将a变成一个字符串 - getJSONObject()为索引取int

如果您在对象和数组之间混淆,JSON对象具有键 - 值对,并用大括号括起来。键是字符串,值可以是任何类型的混合:

{"key1": 5, "key2": "value2", "key3": {
    "anotherObject": [1,2,3,4]
    }
}

数组是一个对象列表,用方括号括起来:

[{...}, {...}, {...}]

列表中的元素不一定是JSON对象,而且在好的JSON中它们都是相同的类型:

[1,2,3,4,4]["we", "are", "in", "an", "array"]

答案 1 :(得分:0)

 JSONTokener jsonTokener = new JSONTokener(jsonVaule);
  JSONObject jsonObject = (JSONObject) jsonTokener.nextValue();
  Int code =jsonObject.getInt("code");
  String status =jsonObject.getString("status");
  //{obejcet,obejcet,...}

  for data{} is the same way~
  JSONObject dataJsObject = (JSONObject)  jsonObject.getJsonObject("data");
  int offset =dataJsObject.getInt(""iffset);
  ....
  //[{},{}] this type is jsonArrary
  JSONArray results = dataJsObject.getJSONArray("results"); 
   for(JSONObject resultJsonObj:JSONArray){
      Int id =jsonObject.getInt("id");
      //...and so on
   }
希望它可以帮到你〜

答案 2 :(得分:0)

您可以像那样解析

 JsonObject obj = new JsonObject(StringResponse);

    String code  = obj.getString(code);
    //same way you can get other string

JsonObject obj1 = obj.getJsonObject(Data);
    String offset= obj.getString(offset);
    //same way you can get other string

JsonArray jsonarr = obj1.getJsonArray(results);

for(i=0;i< jsonarr.size(); i++){
JsonObject innerObj = jsorr.getJsonObject(i);

  String id= obj.getString(id);
    //same way you can get other string


}

希望它对你有所帮助