这两个请求之间的区别

Difference between these two requests

本文关键字:请求 之间 区别 两个      更新时间:2023-09-26

请求一个(不工作)

{
    "AddNewRequest":{
        "Patient":{
            "PrimaryPhoneNumber":" ",
            "DateOfBirth":" ",
            "CellPhoneNumber1":" ",
            "ResidentialAddress":{
                "AddressLine1":" ",
                "State":" ",
                "City":" ",
                "PostalCode":" "
            },
            "PhoneNumber1":" ",
            "SSN":" ",
            "FullName":"John",
            "Religion":" ",
            "Gender":" ",
            "Race":" ",
            "Firstname":"Vinoth",
            "EmailAddress1":" ",
            "LastName":"Cooper"
        },
        "Header":{
            "SourceSiteID":"300242",
            "DestinationSiteID":"300242",
            "PrimeSuiteUserID":"1"
        },
        "Credentials":{
            "VendorCredential":{
                "VendorLogin":"testGUID",
                "VendorPassword":"testGUID"
            },
            "PrimeSuiteCredential":{
                "PrimeSuiteUserPassword":"password",
                "PrimeSuiteSiteId":"1",
                "PrimeSuiteUserName":"Admin"
            }
        }
    }
}

请求二(工作)

{
    "PatientAddNewRequest":{
        "Credentials":{
            "PrimeSuiteCredential":{
                "PrimeSuiteSiteId":"300242",
                "PrimeSuiteUserName":"Admin",
                "PrimeSuiteUserPassword":"password"
            },
            "VendorCredential":{
                "VendorLogin":"testGUID",
                "VendorPassword":"testGUID"
            }
        },
        "Header":{
            "DestinationSiteID":"300242",
            "PrimeSuiteUserID":"1",
            ":SourceSiteID":"300242"
        },
        "Patient":{
            "CellPhoneNumber1":"206-567-2222",
            "DateOfBirth":"/Date(1306348200000)/",
            "EmailAddress1":"JohnDoe@yahoo.com",
            "Firstname":"TestMan1",
            "FullName":"TestFullMan1",
            "Gender":"2",
            "LastName":"Testlastname1",
            "PhoneNumber1":"205-567-1111",
            "PrimaryPhoneNumber":"205-456-4545",
            "Race":"2",
            "Religion":"3",
            "ResidentialAddress":{
                "City":"Carrollton",
                "PostalCode":"35209",
                "State":"10"
            },
            "SSN":"911-91-9191"
        }
    }
}

我只是不明白为什么第一个请求不起作用,而第二个请求给出了响应。有人能认出我做错了什么吗。

秩序重要吗

更新

第一个抛出错误请求,第二个按预期响应。

在JSON中,顺序无关紧要,但名称重要。在请求一中有"AddNewRequest",而在请求二则有"PatientAddNewRequest"

同样在服务器端,序列化程序/反序列化程序可能需要特定的排序。

JSON-

对象是无序的零个或多个名称/值的集合对,其中名称是字符串value是字符串、数字、布尔值,null、对象或数组。

我们不知道您处理这些"请求"的代码,但要回答您的问题:

是的,JSON中元素的顺序可能很重要

除非您的代码以不受其顺序影响的方式处理它。

例如,如果您有两个对象:

  1. {prop1: 'abc', prop2: 'xyz'}
  2. {prop2: 'xyz', prop1: 'abc'}

然后在PHP中以以下方式处理它们,例如:

$data = json_decode($request_string);
foreach ($data as $key => $value) {
    echo '['.$value.']';
}

您应该收到以下结果:

  1. 对于第一个请求:[abc][xyz]
  2. 对于第二个请求:[xyz][abc]

但如果你这样做:

$data = json_decode($request_string);
echo '['.$data['prop1'].']['.$data['prop1'].']';

在这两种情况下,您都会收到相同的结果,即:

[abc][xyz]

希望能澄清一些事情。

在#1请求中重命名属性名称

您是否在第一次请求中将AddNewRequest重命名为PatientAddNewRequest?有什么不同吗?