Java JSON 从 JSONArray 的 JSONObject 中的选定名称中提取值

标签 java android json

我正在尝试从 JSONArray 创建的 JSONbject 中的名称中提取值,JSONAarray 是从主(根)JSONObject 创建的。

这是 JSON:

{"filelist": [{
"1": {
    "filename": "sample.mp3",
    "baseurl": "http://etc.com/"
}}]}

我相当确定 JSON 格式正确。

这是 Java(对于 Android SDK,这是在主 Activity 类的 OnCreate 方法中):

    String jsonString = new String("{\"filelist\": [{ \"1\": { \"filename\": \"sample.mp3\", \"baseurl\": \"http://etc.com/\" }}]}");
JSONObject jObj = new JSONObject(jsonString);
JSONArray jArr = new JSONArray(jObj.getJSONArray("filelist").toString());
JSONObject jSubObj = new JSONObject(jArr.getJSONObject(0).toString());
textView1.setText(jSubObj.getString("filename"));

感谢您的浏览,非常感谢任何答案。

最佳答案

您可能希望简化 JSON 结构,但您现在可以按如下方式阅读它:

JSONObject jObj;
try {
  jObj = new JSONObject(jsonString);
  JSONArray jArr = jObj.getJSONArray("filelist");
  JSONObject jObj2 = jArr.getJSONObject(0);
  textView1.setText(jObj2.getJSONObject("1").getString("filename"));
} catch (JSONException e) {
  e.printStackTrace();
}

如果你打算在 JSON 数组中有连续的数字,那么你可以考虑消除它们:

{"filelist": [
  {
    "filename": "sample.mp3",
    "baseurl": "http://etc.com/"
  }
]}

需要少一步:

JSONObject jObj;
try {
  jObj = new JSONObject(jsonString);
  JSONArray jArr = jObj.getJSONArray("filelist");
  JSONObject jObj2 = jArr.getJSONObject(0);
  textView1.setText(jObj2.getString("filename"));
} catch (JSONException e) {
  e.printStackTrace();
}

关于Java JSON 从 JSONArray 的 JSONObject 中的选定名称中提取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5814142/

相关文章:

iphone - 在 iOS6 中使用 JSON

android - 使用 json 通过服务器数据库绘制折线图

java - 在 freemarker 中将字符串输出为 html

android - 在 Qt Android 中使用 C++17

java - 如何将 onBindViewHolder 内部的项目存储到数组

android - 音乐播放器请求写入外部存储权限?

json - Laravel从数据库读取json

java - 后台服务 Android 中的位置监听器

java - 调试: Using PENTAHO_JAVA_HOME

java - 如何在java中将多个多边形合并为一个