JSON数组顺序

时间:2013-06-14 20:18:37

标签: android json

我使用PHP作为中间人来访问MySql数据库,它使用json_encode将查询结果作为json字符串返回,然后将其显示在应用程序的TableLayout中,这就是为什么订单很重要所以我可以排列数据和标题。

经过一些研究后我发现json没有强制执行顺序,所以每次调用new JSONArray(result)它都会扰乱PHP返回的json。有没有办法保留返回字符串的顺序?或者我可能在两端都使用了错误的数据结构。

相关的PHP结果

[{"FIELD1":"vsa","FIELD2":"dfs","FIELD3":"dsfa","FIELD4":"adsf","FIELD5":"23","ZIPCODE":"asdf","USERNAME":"asd","PASSWORD":"as","DATE1":"dsfa"}]

JSONArray之后的相关Android结果(结果):

[{"ZIPCODE":"asdf","DATE1":"dsfa","FIELD3":"dsfa","FIELD2":"dfs","FIELD5":"23","FIELD4":"adsf","USERNAME":"asd","FIELD1":"vsa","PASSWORD":"as"}]

3 个答案:

答案 0 :(得分:0)

我从未见过new JSONArray(String)更改任何内容的顺序,我已经使用了很多。但是,你所拥有的似乎是一个长度为1的数组。使用myJsonArray.getJsonObject(0).getString("ZIPCODE")仍然应该返回正确的数据,并且只要你以正确的顺序查询(FIELD1,FIELD2,FIELD3等),你应该是细

答案 1 :(得分:0)

我认为JSON对象内部的重新排序是由于JSON对象是键/值对(不是索引数组),默认情况下是无序的。但是,JSON数组是一个有序的值序列(JSON对象)。

不要依赖订单!

来源:http://www.ietf.org/rfc/rfc4627.txt

答案 2 :(得分:0)

https://code.google.com/p/json-simple/downloads/detail?name=json_simple-1.1.jar&can=2&q=

下载“json simple 1.1 jar”

将jar文件添加到lib文件夹

使用JSONValue可以将LinkedHashMap转换为json字符串

如需更多参考,请点击此处http://androiddhina.blogspot.in/2015/09/ordered-json-string-in-android.html