为什么json对象的索引不一致?
First 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=
{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。