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

标签 java php android json

我有一个这样的 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"
    ]
  }
},

我使用这样的代码 =>

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);
            }

我期望的输出是:

标题 =

日期 =

海报(在文件夹 dp_video_poster 中)=

视频(在文件夹 dp_video_file 中)=

谁能帮我解决这个问题?

提前致谢

最佳答案

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/

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

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();
    }

}

关于java - 在json对象android中获取数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18036594/

相关文章:

android - 无法在特定设备上为 ReadWirte 打开数据库

Java:如何为多个文件或目录创建torrent文件?

php - Ajax 实时文本框按下所有 Html 元素

php - mysqli fetch_all() 不是一个有效的函数?

android - 如何在 Android 中以编程方式停止使用电子邮件输入类型的 edittext 自动建议

android - 在ListView中添加图像

Java 列表 - 预期标识符

java - 创建方法和对象

java - Thymeleaf 空值检查

PHP 服务 MP4 - Chrome "Provisional headers are shown/request is not finished yet"错误