json 数组读取排序问题
2018-03-28 18:34
218 查看
今天遇到一个依赖健值数组读取排序的问题
接口开发同事返回的json格式是这样的, 我在小程序调用接口读取数组遍历之后发现排序乱了{
"price_info": {
"08": {
"01": {
"price": 9999,
"booked": 0
},
"02": {
"price": 99999,
"booked": 0
},
"03": {
"price": 99999,
"booked": 0
},
"04": {
"price": 99999,
"booked": 0
},
"05": {
"price": 99999,
"booked": 0
},
"06": {
"price": 99999,
"booked": 0
}
},
"09": {
"01": {
"price": "15",
"booked": 1
},
"02": {
"price": "15",
"booked": 1
},
"03": {
"price": "15",
"booked": 0
},
"04": {
"price": "15",
"booked": 0
},
"05": {
"price": "15",
"booked": 0
},
"06": {
"price": "15",
"booked": 0
}
},
"10": {
"01": {
"price": "15",
"booked": 1
},
"02": {
"price": "15",
"booked": 0
},
"03": {
"price": "15",
"booked": 0
},
"04": {
"price": "15",
"booked": 0
},
"05": {
"price": "15",
"booked": 0
},
"06": {
"price": "15",
"booked": 0
}
}
}
}这是我的一个数组,price_info 健值提供是08、09、10 的排序
在我的项目里我用for in 遍历数组也会出现排序错误
我通过https://jsoneditoronline.org/ 在线解析, 发现结果变成这样了,排序的08、09 排到后面
接着我将08,09 前面的0去掉,发现读取的顺序正常了
解决方案
http://w3help.org/zh-cn/causes/SJ9011
for-in 语句无法保证遍历顺序,应尽量避免编写依赖对象属性顺序的代码。如果想顺序遍历一组数据,请使用数组并使用 for 语句遍历。 如果想按照 定义的次序遍历对象属性
如果遇到需要依赖对象的排序,最好采用数组形式,例如上面的json可以改为
{
"price_info": [
{"key":"08",
"info": {
"01": {
"price": 9999,
"booked": 0
},
"02": {
"price": 99999,
"booked": 0
},
"03": {
"price": 99999,
"booked": 0
},
"04": {
"price": 99999,
"booked": 0
},
"05": {
"price": 99999,
"booked": 0
},
"06": {
"price": 99999,
"booked": 0
}
}
},
{"key":"09",
"info": {
"01": {
"price": 9999,
"booked": 0
},
"02": {
"price": 99999,
"booked": 0
},
"03": {
"price": 99999,
"booked": 0
},
"04": {
"price": 99999,
"booked": 0
},
"05": {
"price": 99999,
"booked": 0
},
"06": {
"price": 99999,
"booked": 0
}
}
},
{"key":"10",
"info": {
"01": {
"price": 9999,
"booked": 0
},
"02": {
"price": 99999,
"booked": 0
},
"03": {
"price": 99999,
"booked": 0
},
"04": {
"price": 99999,
"booked": 0
},
"05": {
"price": 99999,
"booked": 0
},
"06": {
"price": 99999,
"booked": 0
}
}
}
]
}然后通过for 遍历,(不用 for in) 遍历出来的健值再判断使用即可
接口开发同事返回的json格式是这样的, 我在小程序调用接口读取数组遍历之后发现排序乱了{
"price_info": {
"08": {
"01": {
"price": 9999,
"booked": 0
},
"02": {
"price": 99999,
"booked": 0
},
"03": {
"price": 99999,
"booked": 0
},
"04": {
"price": 99999,
"booked": 0
},
"05": {
"price": 99999,
"booked": 0
},
"06": {
"price": 99999,
"booked": 0
}
},
"09": {
"01": {
"price": "15",
"booked": 1
},
"02": {
"price": "15",
"booked": 1
},
"03": {
"price": "15",
"booked": 0
},
"04": {
"price": "15",
"booked": 0
},
"05": {
"price": "15",
"booked": 0
},
"06": {
"price": "15",
"booked": 0
}
},
"10": {
"01": {
"price": "15",
"booked": 1
},
"02": {
"price": "15",
"booked": 0
},
"03": {
"price": "15",
"booked": 0
},
"04": {
"price": "15",
"booked": 0
},
"05": {
"price": "15",
"booked": 0
},
"06": {
"price": "15",
"booked": 0
}
}
}
}这是我的一个数组,price_info 健值提供是08、09、10 的排序
在我的项目里我用for in 遍历数组也会出现排序错误
我通过https://jsoneditoronline.org/ 在线解析, 发现结果变成这样了,排序的08、09 排到后面
接着我将08,09 前面的0去掉,发现读取的顺序正常了
解决方案
http://w3help.org/zh-cn/causes/SJ9011
for-in 语句无法保证遍历顺序,应尽量避免编写依赖对象属性顺序的代码。如果想顺序遍历一组数据,请使用数组并使用 for 语句遍历。 如果想按照 定义的次序遍历对象属性
如果遇到需要依赖对象的排序,最好采用数组形式,例如上面的json可以改为
{
"price_info": [
{"key":"08",
"info": {
"01": {
"price": 9999,
"booked": 0
},
"02": {
"price": 99999,
"booked": 0
},
"03": {
"price": 99999,
"booked": 0
},
"04": {
"price": 99999,
"booked": 0
},
"05": {
"price": 99999,
"booked": 0
},
"06": {
"price": 99999,
"booked": 0
}
}
},
{"key":"09",
"info": {
"01": {
"price": 9999,
"booked": 0
},
"02": {
"price": 99999,
"booked": 0
},
"03": {
"price": 99999,
"booked": 0
},
"04": {
"price": 99999,
"booked": 0
},
"05": {
"price": 99999,
"booked": 0
},
"06": {
"price": 99999,
"booked": 0
}
}
},
{"key":"10",
"info": {
"01": {
"price": 9999,
"booked": 0
},
"02": {
"price": 99999,
"booked": 0
},
"03": {
"price": 99999,
"booked": 0
},
"04": {
"price": 99999,
"booked": 0
},
"05": {
"price": 99999,
"booked": 0
},
"06": {
"price": 99999,
"booked": 0
}
}
}
]
}然后通过for 遍历,(不用 for in) 遍历出来的健值再判断使用即可
相关文章推荐
- C#字符串数组排序 C#排序算法大全 C#字符串比较方法 一个.NET通用JSON解析/构建类的实现(c#) C#处理Json文件 asp.net使用Jquery+iframe传值问题
- json数组去重的问题--indexOf
- javascript中用数组sort排序问题
- json格式的数据,和将数组转化成json对象问题
- 排序数组循环移位后查找问题
- php 根据一个数组对另外一个数组进行排序问题
- 【第22篇】通过JackJson去读取Json数组数据
- python学习笔记:二维数组排序问题
- js运用sort对json 数组进行排序
- iOS数组排序及遇到的问题duplicate symbol XXX
- 数组排序问题
- 数组排序问题(数字字符串排序)
- 对于js数组排序的问题 arr.sort()
- 数组中的排序问题
- python读取删除重写json以及遇见问题ValueError: No JSON object could be decoded
- 对json数组进行排序和filter过滤
- 解决JavaWeb读取本地json文件以及乱码的问题
- zoj 2109 FatMouse' Trade简单的贪心 (注意double数组的排序问题)
- Java读取json数组转化成List或Object数组
- android客户端解析本地json数组出现乱码问题解决方法