-2

好吧。我有一个从服务器发送给我的 JSON 对象,其中包含以下数据:

{
    "result":
    [
        {"status":"green","type":"data1"},
        {"status":"green","type":"data2"},
        {"status":"green","type":"data3"}
    ],
    "status":"ok"
}

我要获取的数据是三个状态值的状态。Data1、data2 和 data3 总是按该顺序显示,所以我现在尝试按索引获取数据(例如 data1 = index 0,data2 = index 1,data3 = index 2)。我怎么做?

4

4 回答 4

1

您将使用JSONObjectJSONArray,整个字符串是一个 JSONObject ,因此您将使用它构造一个。

JSONObject object = new JSONObject(YOUR_STRING_OF_JSON);

然后,您可以根据您的预期类型使用不同的 get 方法访问它。

JSONArray results = object.getJSONArray("result"); // This is the node name.
String status = object.getString("status");

for (int i = 0; i < results.length(); i++) {
    String resultStatus = results.getJSONObject(i).getString("status");
    String type = results.getJSONObject(i).getString("type");
    Log.w("JSON Result #" + i, "Status: " + resultStatus + " Type: " + type);
}

您需要用 try/catch 包围它,因为 JSON 访问可能会引发 JSONException。

于 2013-07-25T17:09:57.483 回答
1

尝试以下操作:

String stat1;
String stat2;
String stat3;
JSONObject ret; //contains the original response
//Parse to get the value
try {
    stat1 = ret.getJSONArray("results").getJSONObject(0).getString("status");
    stat2 = ret.getJSONArray("results").getJSONObject(1).getString("status");
    stat3 = ret.getJSONArray("results").getJSONObject(2).getString("status");
} catch (JSONException e1) {
    e1.printStackTrace();

}
于 2013-07-25T17:04:30.967 回答
1

尝试通过 forEach 循环重构

var testData = 
{   
    "result":
    [   
        {"status":"green","type":"data1"},
        {"status":"green","type":"data2"},
        {"status":"green","type":"data3"}
    ],  
    "status":"ok"
};  


var output      = new Object;
var resultSet   = new Object;
    resultSet   = testData.result;

resultSet.forEach(function(data)
{   
    theStatus = data['status'];
    theType   = data['type']

    output[theType] = theStatus;
}); 

console.log( output['data1'] );
于 2013-07-25T17:39:32.843 回答
0

如果您已将模型设置为镜像该数据集,那么您可以让 GSON ( https://code.google.com/p/google-gson/ ) 为您完成大量工作。

如果您想要更多控制,并且想要自己解析集合,您可以使用JSONObject, JSONArray. 这里有一个解析和组装 json 字符串的例子:Android create a JSON array of JSON Objects

于 2013-07-25T17:01:30.410 回答