首页 > 解决方案 > 当我从数据文件中获取数据时,我的 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"
        }
    ]
}

标签: jsonpostman

解决方案


JSON 规范声明:“对象是一组无序的名称/值对。

使用 JSON(以及大多数语言中的对象)时,对象中的属性本质上是无序的。您不能依赖不同的系统按照您提供属性的顺序为您提供属性。事实上,您甚至不能依赖一个系统在给定的代码执行过程中始终以相同的顺序为您提供属性,即使许多系统确实如此。

如果要保留顺序,则需要使用数组来存储数据,或者可以使用对象属性名称数组来按您想要的顺序存储键,这样您就可以使用该数组在以后想要的顺序。

例如:

   keyorder = ["ID",
               "OrganizationId",
               "OrganizationName",
               "Name",
               "IsActive",
               "Type",
               "AppliesTo",
               "TagHOD",
               "DisplayAsPrimary",
               "Values"
               ]

然后,您可以在访问对象中的元素时遍历此数组,因此您始终以定义的顺序访问它们。

在 python 中,使用名为“data”的对象,它看起来像:

 for key in keyorder:
      print data.get(key)

推荐阅读