如何获取JSON Web Service返回对象的属性键顺序?
获取JSON对象属性的原始顺序并转为数组
JavaScript 实现
ES6及后续版本中,对象属性会保留插入顺序(数字类型键除外,这类键会被自动排序),可以直接通过原生API获取顺序并转为数组:
// 假设接口返回的对象为responseObj const responseObj = { "id": 12, "name": "xxx", "age": 12 }; // 获取按原始顺序的属性键数组 const keyArray = Object.keys(responseObj); // 输出:["id", "name", "age"] // 获取按原始顺序的键值对数组 const entryArray = Object.entries(responseObj); // 输出:[["id",12], ["name","xxx"], ["age",12]]
注意:若JSON包含数字类型键(如{"2": "a", "1": "b"}),数字键会被强制排序,这是JavaScript的固有特性,无法规避。
Python 实现
Python 3.7+版本的字典默认保留插入顺序,直接解析JSON即可:
import json # 假设接口返回的JSON字符串为json_str json_str = '{"id": 12, "name": "xxx", "age": 12}' response_dict = json.loads(json_str) # 获取按原始顺序的属性键数组 key_array = list(response_dict.keys()) # 输出:["id", "name", "age"] # 获取按原始顺序的键值对数组 entry_array = list(response_dict.items()) # 输出:[("id",12), ("name","xxx"), ("age",12)]
如果使用Python 3.6及更早版本,需要借助OrderedDict确保顺序:
from collections import OrderedDict import json response_dict = json.loads(json_str, object_pairs_hook=OrderedDict)
核心注意事项
- 不同编程语言对对象/字典的顺序支持存在版本差异,需确认所用语言的版本特性(比如Python 3.7前不保证字典顺序,ES6前的JavaScript也不保证)。
- 必须通过正规JSON解析器处理接口返回的JSON字符串,禁止手动拆分字符串,否则会在属性值包含特殊字符(如逗号)时出现错误。
内容的提问来源于stack exchange,提问作者u936293
相关产品推荐
相关产品推荐

