json - 当我从数据文件中获取数据时,我的 json 请求的 Oder 按字母顺序排序。我不希望我的 json 请求得到排序
问题描述
{
"ID":0,
"OrganizationId":"",
"OrganizationName":"",
"Name":"",
"IsActive":"True",
"Type":2,
"AppliesTo":1,
"TagHOD":"",
"DisplayAsPrimary":"false",
"Values":[
]
}
以上是我存储在数据文件中的 json 请求
下面是我在向其中发送参数后得到的 json 请求正文。它按我不想要的字母顺序排序。我想要与上面相同的顺序,例如 ID 应该是第一个然后是 OrganizationId
{
"AppliesTo": 1,
"DisplayAsPrimary": "false",
"ID": 0,
"IsActive": "True",
"Name": "TAG1205510333275",
"OrganizationId": 2404,
"OrganizationName": "",
"TagHOD": "",
"Type": 2,
"Values": [
{
"HODEmail": "tagsapiautomationae@mailinator.com",
"Id": 1,
"IsDeleted": false,
"Text": "Level20"
}
]
}
解决方案
JSON 规范声明:“对象是一组无序的名称/值对。 ”
使用 JSON(以及大多数语言中的对象)时,对象中的属性本质上是无序的。您不能依赖不同的系统按照您提供属性的顺序为您提供属性。事实上,您甚至不能依赖一个系统在给定的代码执行过程中始终以相同的顺序为您提供属性,即使许多系统确实如此。
如果要保留顺序,则需要使用数组来存储数据,或者可以使用对象属性名称数组来按您想要的顺序存储键,这样您就可以使用该数组在以后想要的顺序。
例如:
keyorder = ["ID",
"OrganizationId",
"OrganizationName",
"Name",
"IsActive",
"Type",
"AppliesTo",
"TagHOD",
"DisplayAsPrimary",
"Values"
]
然后,您可以在访问对象中的元素时遍历此数组,因此您始终以定义的顺序访问它们。
在 python 中,使用名为“data”的对象,它看起来像:
for key in keyorder:
print data.get(key)
推荐阅读
- python - 快速计算由 connectedComponents 生成的所有簇的平均颜色
- bash - 如何在bash脚本中为openssl动态生成-extfile参数
- c# - 尝试为 Azure 公共客户端应用程序获取令牌交互时访问被拒绝
- jquery-select2 - 无法将动态数据绑定到 select2 数据源
- python - 使用 ListView 时,上下文未显示在模板中
- react-native - react-native 重新渲染否定过滤器
- python - 用多维数组展平数据框
- java - 为什么 ClassLoader.getResourceAsStream 可以找到文件但 Class.getResourceAsStream 不能
- java - Java 多线程:想要快速替代 AtomicInteger
- mysql - 如何使用限制进行嵌套选择(WHERE)