这两个请求之间的区别

时间:2011-06-01 22:53:54

标签: javascript json

请求一个(不工作)

{
    "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"
        }
    }
}

我只是无法弄清楚为什么第一个请求不起作用而第二个请求给出响应。任何人都可以确定我做错了什么。

订单是否重要?

更新

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

3 个答案:

答案 0 :(得分:6)

在JSON中,顺序无关紧要,但名称确实如此。在请求一中,您在{strong>请求二时有"AddNewRequest" "PatientAddNewRequest"

同样在服务器端,串行器/解串器可能需要特定的订购。

JSON

  

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

答案 1 :(得分:2)

我们不知道处理这些“请求”的代码,而是回答您的问题:

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

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

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

  1. {prop1: 'abc', prop2: 'xyz'}
  2. {prop2: 'xyz', prop1: 'abc'}
  3. 并在PHP中以下列方式处理它们,例如:

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

    您应该收到以下结果:

    1. 第一次请求:[abc][xyz]
    2. 第二次请求:[xyz][abc]
    3. 但如果你这样做:

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

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

      [abc][xyz]
      

      希望澄清一些事情。

答案 2 :(得分:1)

在#1请求

中重命名属性名称

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