为啥 Json 对象顺序在 android KITKAT 及以下版本中混淆?

Posted

技术标签:

【中文标题】为啥 Json 对象顺序在 android KITKAT 及以下版本中混淆?【英文标题】:Why Json Object order mixed up in android KITKAT and below versions?为什么 Json 对象顺序在 android KITKAT 及以下版本中混淆? 【发布时间】:2017-01-13 18:11:24 【问题描述】:

我正在尝试将这些JSONbject 发送到服务器进行登录,它在 android lollipop 和 marshmallow 中的工作方式就像一个魅力,但是当我尝试登录 android kitkat 及以下版本时,由于 json,它给出了不正确的用户名和密码错误订单混淆。我该如何解决?

       JSONObject jsonObject = new JSONObject();
            try 
                jsonObject.put("USERName", username);
                jsonObject.put("LOGINPASSWORD", password);
                jsonObject.put("IMEINUMBER1", imeino);
                jsonObject.put("Latitude", latitude);
                jsonObject.put("Longitude", longitude);
             catch (JSONException e) 
                e.printStackTrace();
            

下面是我的jsonObject,它在 Android Kitkat 及以下版本中混用。

"USERName":"Rahul","Latitude":24.588532515497256,"Longitude":73.7020509167292,"IMEINUMBER1":"911375058484548","LOGINPASSWORD":"12345"

【问题讨论】:

json 是无序的!检查here 它在 Android Lollipop 和 marshmallow 中工作正常。但是对于低于 android 版本为什么它变得无序? 你不明白——你不能让事情超过标准。 JSON 标准表示 JSON 对象是一组无序的名称/值对,这意味着阅读器永远不应依赖 JSON 字段排序,而是通过 name 访问值。如果您想保留顺序,请改用 JSON 数组:数组是零个或多个值的有序序列。 【参考方案1】:

JSONObject 不保证其键的任何顺序,它有时可能是插入顺序,有时不是。

如果您需要保持插入顺序,请改用JSONArray。

【讨论】:

以上是关于为啥 Json 对象顺序在 android KITKAT 及以下版本中混淆?的主要内容,如果未能解决你的问题,请参考以下文章

Android开发中为啥很少使用JSON存储数据

Jackson 在 Android 上按字母顺序对 JSON 序列化输出键进行排序

为啥json.keys()以不同的顺序获取密钥[重复]

如何确定节点出现在 sprite kit 中的顺序

为啥 Sprite Kit 文本分辨率会略微像素化?

android怎么把json转换为hashmap