为什么json对象的索引不一致?

时间:2012-05-15 02:12:17

标签: json indexing arrays

fisrt JSON

{value:[{"sk_service":"1","hour":"0","sum(transaction)":"1636"}]}

第二个JSON

{value:[{"sk_service":"1","month":"04","sum(transaction)":"19572"}]}

然后我这样做是为了知道我的json

的属性
String a= JSONArray.getJSONObject(0).names().getString(0); //0
String b= JSONArray.getJSONObject(0).names().getString(1); //1

结果:

第一个json

a = sum(transaction) //index 0.
b = hour         //index 1. 

第二个json

a = month       //index 0.
b = sum(transaction)    //index 1.

为什么第一个和第二个json之间的结果不一致?

2 个答案:

答案 0 :(得分:0)

JSON:JavaScript Object Notation - 您将其视为对象,您可以显式访问属性:

这应该可以解决问题:

var data = new Array();

for(var index = 0; index < JSONArray.length; index++){
    data.push(eval("(" + JSONArray.getJSONObject(index) + ")"));
}

现在你有一个数组可以让你明确地检索数据:

data[0].value["sk_service"] will give you "1"
data[1].value["month"] will give you "04"
data[0].value["sum(transaction)"] will give you "1636"

我建议你重新考虑你的JSON:

第二个JSON

{value:[{"sk_service":"1","period":"month","duration":"4","transactionSum":"19572"}]}

引入句点和持续时间属性将在以后简化您的代码 将sum(transaction)重命名为transactionSum可以避免以后混淆。

答案 1 :(得分:0)

你可能只是混淆了。

String a= JSONArray.getJSONObject(0).names().getString(0); 
String b= JSONArray.getJSONObject(1).names().getString(0);

getJSONObject()返回JSON对象,在您的代码中,您似乎使用相同的JSON对象。

getString()返回与该索引匹配的字符串。假设您想要每个JSON中的第一个元素,在两种情况下都不会指定0