开发者工具-网络-点击一个返回 json 的链接,发现 priview 和 response 的排序是不一样的。
以下是乱序的部分,接口下发的 user 是在 MzM=前面的,但在 priview 里是倒过来的,js 里和 priview 是一样的顺序。所以,这是 js 的某种设定么? [ postman 里顺序是和接口下发的 response 一致的]
{
"user": {
"title": "用户信息",
"type": "user",
"coded": false,
"display": [
"name"
],
"scored": false,
"readonly": false,
"invisible": false
},
"MzM=": {
"title": "33",
"type": "decimal",
"coded": false,
"scored": false,
"readonly": false,
"invisible": false
}
}
1
temporary 2021-08-06 17:16:07 +08:00 via iPhone
对象的键是无序的吧
|
2
AoEiuV020 2021-08-06 17:26:08 +08:00
json object 本来就是无序的,preview 应该是内部解析了一遍再打印出来,顺序不能保证,
要确定的顺序用 json array, |
3
codehz 2021-08-07 15:43:01 +08:00
按规范就是无序的,你有序只是幻觉,或者说是巧合
比如 o={1: 2, "3": 5, "2": 4, "a": 6, 4: 7} Object.keys(o) 在 chrome 里会得到 ["1", "2", "3", "4", "a"] |
4
clf OP @codehz #3 嗯,发现了,但有个很难解释的情况:
在直接使用此对象时,比如 JsonSchema 去按 Object 的顺序渲染表单,表单的顺序和此对象的实际顺序是一致的,而和打印 /遍历顺序是不一致的。是否可以表明,在某种情况下其实是可以以插入顺序 /生成顺序读取的。不然的话 JsonSchema 的表单结构设计为何不是 Array 而是 Object: 这是 react-jsonschema-form 的 JsonSchema 描述表单字段的部分: "properties": { "firstName": { "type": "string", "title": "First name", "default": "Chuck" }, "lastName": { "type": "string", "title": "Last name" }, "telephone": { "type": "string", "title": "Telephone", "minLength": 10 } } |
5
codehz 2021-08-08 08:33:10 +08:00 via Android
@lychs1998 这没啥不好解释的,用无序的对应无序的有啥问题呢,你换个顺序 JSON Schema 就不认了吗
|
6
codehz 2021-08-08 08:34:32 +08:00 via Android
哦,是说渲染表单啊, 你猜猜 ui:order 是干啥的
|