猿问

获取没有数组名称的JSONArray吗?

我刚接触JSON,请尝试以下教程:http : //p-xr.com/android-tutorial-how-to-parse-read-json-data-into-a-android-listview/#comments


我是JSON,C语言,Java和Android的新手,但我正在学习。本教程使用的是我所说的命名数组,但是我将在我的android项目中使用的所有JSON将使用没有命名数组的简单表行。下面是我正在使用的JSON和教程中的地震json的示例。


本教程使用以下代码迭代地震数组,并将其转换为JAVA哈希图列表:


JSONArray  earthquakes = json.getJSONArray("earthquakes");

    for(int i=0;i<earthquakes.length();i++){                        

        HashMap<String, String> map = new HashMap<String, String>();    

        JSONObject e = earthquakes.getJSONObject(i);


        map.put("id",  String.valueOf(i));

        map.put("name", "Earthquake name:" + e.getString("eqid"));

        map.put("magnitude", "Magnitude: " +  e.getString("magnitude"));

        mylist.add(map);            

}

我的问题是,json.getJSONArray("")如果我的JSON如下所示,该如何使用?我可以转换其余代码,getJSONArray("strJsonArrayName")如果我没有,我只需要知道如何使用来加载JSON strJsonArrayName。


我的JSON(未命名数组)


[

  {

    "cnt":1,

    "name":"American",

    "pk":7

  },

  {

    "cnt":2,

    "name":"Celebrities",

    "pk":3

  },

  {

    "cnt":1,

    "name":"Female",

    "pk":2

  },

  {

    "cnt":1,

    "name":"Language",

    "pk":8

  },

  {

    "cnt":1,

    "name":"Male",

    "pk":1

  },

  {

    "cnt":1,

    "name":"Region",

    "pk":9

  }

]

教程的JSON(命名数组)


{

  "earthquakes":[

    {

      "eqid":"c0001xgp",

      "magnitude":8.8,

      "lng":142.369,

      "src":"us",

      "datetime":"2011-03-11 04:46:23",

      "depth":24.4,

      "lat":38.322

    },

    {

      "eqid":"c000905e",

      "magnitude":8.6,

      "lng":93.0632,

      "src":"us",

      "datetime":"2012-04-11 06:38:37",

      "depth":22.9,

      "lat":2.311

    },

    {

      "eqid":"2007hear",

      "magnitude":8.4,

      "lng":101.3815,

      "src":"us",

      "datetime":"2007-09-12 09:10:26",

      "depth":30,

      "lat":-4.5172

    },

    {

      "eqid":"c00090da",

      "magnitude":8.2,

      "lng":92.4522,

      "src":"us",

      "datetime":"2012-04-11 08:43:09",

      "depth":16.4,

      "lat":0.7731

    },

慕森卡
浏览 807回答 3
3回答

天涯尽头无女友

您根本不需要调用json.getJSONArray(),因为您正在使用的JSON 是一个数组。因此,请勿构造JSONObject; 的实例。使用一个JSONArray。这样就足够了:// ...JSONArray json = new JSONArray(result);// ...for(int i=0;i<json.length();i++){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; HashMap<String, String> map = new HashMap<String, String>();&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; JSONObject e = json.getJSONObject(i);&nbsp; &nbsp; map.put("id",&nbsp; String.valueOf(i));&nbsp; &nbsp; map.put("name", "Earthquake name:" + e.getString("eqid"));&nbsp; &nbsp; map.put("magnitude", "Magnitude: " +&nbsp; e.getString("magnitude"));&nbsp; &nbsp; mylist.add(map);&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;}您不能使用与本教程中完全相同的方法,因为您要处理的JSON需要JSONArray从根解析为,而不是JSONObject。
随时随地看视频慕课网APP

相关分类

Android
我要回答