Java 在json对象android中获取数组中的值

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/18036594/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-11 21:57:21  来源:igfitidea点击:

get value in array in json object android

javaphpandroidjson

提问by zacky

i have a json like this,

我有一个这样的json,

{
  "id": 293,
  "type": "post",
  "slug": "a-box-rd",
  "url": "http:\/\/www.godigi.tv\/blog\/2013\/07\/01\/a-box-rd\/",
  "status": "publish",
  "title": "A Box R&D",
  "title_plain": "A Box R&D",
  "content": "",
  "excerpt": "",
  "date": "2013-07-01 09:09:25",
  "modified": "2013-07-01 09:18:09",
  "categories": [
    {
      "id": 15,
      "slug": "info",
      "title": "Info",
      "description": "",
      "parent": 0,
      "post_count": 7
    }
  ],
  "tags": [

  ],
  "author": {
    "id": 2,
    "slug": "eka2013",
    "name": "ekawijaya",
    "first_name": "",
    "last_name": "",
    "nickname": "ekawijaya",
    "url": "",
    "description": ""
  },
  "comments": [

  ],
  "attachments": [
    {
      "id": 298,
      "url": "http:\/\/www.godigi.tv\/wp-content\/uploads\/2013\/07\/rnd.jpg",
      "slug": "rnd",
      "title": "rnd",
      "description": "",
      "caption": "",
      "parent": 293,
      "mime_type": "image\/jpeg",
      "images": {
        "full": {
          "url": "http:\/\/www.godigi.tv\/wp-content\/uploads\/2013\/07\/rnd.jpg",
          "width": 528,
          "height": 493
        },
        "thumbnail": {
          "url": "http:\/\/www.godigi.tv\/wp-content\/uploads\/2013\/07\/rnd-150x150.jpg",
          "width": 150,
          "height": 150
        },
        "medium": {
          "url": "http:\/\/www.godigi.tv\/wp-content\/uploads\/2013\/07\/rnd-300x280.jpg",
          "width": 300,
          "height": 280
        },
        "large": {
          "url": "http:\/\/www.godigi.tv\/wp-content\/uploads\/2013\/07\/rnd.jpg",
          "width": 528,
          "height": 493
        },
        "post-thumbnail": {
          "url": "http:\/\/www.godigi.tv\/wp-content\/uploads\/2013\/07\/rnd-150x150.jpg",
          "width": 150,
          "height": 150
        },
        "custom-small": {
          "url": "http:\/\/www.godigi.tv\/wp-content\/uploads\/2013\/07\/rnd-160x90.jpg",
          "width": 160,
          "height": 90
        },
        "custom-medium": {
          "url": "http:\/\/www.godigi.tv\/wp-content\/uploads\/2013\/07\/rnd-320x180.jpg",
          "width": 320,
          "height": 180
        },
        "custom-large": {
          "url": "http:\/\/www.godigi.tv\/wp-content\/uploads\/2013\/07\/rnd-528x360.jpg",
          "width": 528,
          "height": 360
        },
        "custom-full": {
          "url": "http:\/\/www.godigi.tv\/wp-content\/uploads\/2013\/07\/rnd.jpg",
          "width": 528,
          "height": 493
        }
      }
    }
  ],
  "comment_count": 0,
  "comment_status": "open",
  "custom_fields": {
    "dp_video_poster": [
      "http:\/\/www.godigi.tv\/wp-content\/uploads\/2013\/07\/rnd.jpg"
    ],
    "views": [
      "7"
    ],
    "likes": [
      "0"
    ],
    "dp_video_file": [
      "http:\/\/www.godigi.tv\/wp-content\/uploads\/2013\/07\/03-A-BOX-RD-ada-pak-bulit.mp4"
    ]
  }
},

and i use the code like this =>

我使用这样的代码 =>

jsonarray = jsonobject.getJSONArray("posts");

            for (int i = 0; i < jsonarray.length(); i++) {
                HashMap<String, String> map = new HashMap<String, String>();
                jsonobject = jsonarray.getJSONObject(i);

                JSONObject jsoncustom;
                jsoncustom = jsonobject.getJSONObject("custom_fields");
                JSONArray araycus = jsoncustom.getJSONArray("dp_video_poster");
                String urlvid = araycus.getString(i);


                // Retrive JSON Objects
                map.put("title", jsonobject.getString("title"));
                map.put("date", jsonobject.getString("date"));

                map.put("dp_video_poster", urlvid);
                // Set the JSON Objects into the array
                arraylist.add(map);
            }

what i expect for output is :

我对输出的期望是:

title =

标题 =

date =

日期 =

poster (this is in folder dp_video_poster) =

海报(位于 dp_video_poster 文件夹中)=

video (this is in folder dp_video_file) =

视频(位于 dp_video_file 文件夹中)=

can any body help me with this?

任何机构可以帮助我吗?

thanks in advance

提前致谢

采纳答案by Vishal Mokal

This function is to read your json file. And remove colon which at the end of your json. Verify your json on this site http://jsonviewer.stack.hu/

这个函数是读取你的json文件。并删除 json 末尾的冒号。在此站点http://jsonviewer.stack.hu/上验证您的 json

public String readFile(String filepath) throws IOException {
    File f = new File(filepath);
    FileInputStream in = new FileInputStream(f);
    int size = in.available();
    byte c[] = new byte[size];
    for (int i = 0; i < size; i++) {
        c[i] = (byte) in.read();
    }
    String filedata = new String(c, "utf-8");
    return filedata;
}

This Function will parse your json file

此函数将解析您的 json 文件

public void parseJson() {
    try {
        String filepath = Environment.getExternalStorageDirectory()
                + "/j/test.json";
        String data = readFile(filepath);

        JSONObject filedata = new JSONObject(data);
        JSONArray categories = (JSONArray) filedata.get("categories");
        JSONObject categorie = (JSONObject) categories.get(0);
        JSONObject custom_field = (JSONObject) filedata
                .get("custom_fields");
        JSONArray dp_video_posters = (JSONArray) custom_field
                .get("dp_video_poster");

        JSONArray dp_video_files = (JSONArray) custom_field
                .get("dp_video_file");

        // getting title
        String maintitle = (String) filedata.get("title");
        // getting title from categories
        String title = (String) categorie.get("title");
        // getting date
        String date = (String) filedata.get("date");
        // getting poster
        String dp_video_poster = (String) dp_video_posters.get(0);
        // getting video
        String dp_video_file = (String) dp_video_files.get(0);



    } catch (JSONException e) {
        e.printStackTrace();

    } catch (IOException e) {
        e.printStackTrace();
    } catch (Exception e) {
        e.printStackTrace();
    }

}