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

为什么json对象的索引不一致?,json,indexing,arrays,Json,Indexing,Arrays,First 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=

First 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和第二个json之间的结果不一致?

json:JavaScript对象表示法-将其视为对象,可以显式访问属性:

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"
这应该可以做到:

var data = new Array();

for(var index = 0; index < JSONArray.length; index++){
    data.push(eval("(" + JSONArray.getJSONObject(index) + ")"));
}
我建议您重新考虑JSON:

第二个JSON

{value:[{"sk_service":"1","period":"month","duration":"4","transactionSum":"19572"}]}
引入period和duration属性将简化以后的代码
sum(transaction)
重命名为
transactionSum
可以避免以后的混淆。

是否可能是您的错误

String a= JSONArray.getJSONObject(0).names().getString(0); 
String b= JSONArray.getJSONObject(1).names().getString(0);
getJSONObject()
返回JSON对象,在代码中似乎使用了相同的JSON对象


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

我不知道JSONArray,但对象的属性在JSON中没有顺序,如果这是你的问题。你能修复你的示例JSON吗?First和second具有相同的结构-如果它们看起来相同,你得到的结果不同,那么你能发布你用来解析它的代码吗?请。你的两个JSON示例都不是有效的JSON。