我使用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"}]
答案 0 :(得分:0)
我从未见过new JSONArray(String)
更改任何内容的顺序,我已经使用了很多。但是,你所拥有的似乎是一个长度为1的数组。使用myJsonArray.getJsonObject(0).getString("ZIPCODE")
仍然应该返回正确的数据,并且只要你以正确的顺序查询(FIELD1,FIELD2,FIELD3等),你应该是细
答案 1 :(得分:0)
我认为JSON对象内部的重新排序是由于JSON对象是键/值对(不是索引数组),默认情况下是无序的。但是,JSON数组是一个有序的值序列(JSON对象)。
不要依赖订单!
答案 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