Разница между этими двумя запросами - PullRequest
1 голос
/ 02 июня 2011

Запрос один (не работает)

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

6 голосов
/ 02 июня 2011

В JSON порядок не имеет значения, но имя имеет значение. В Запрос один у вас есть "AddNewRequest", а в Запрос два у вас "PatientAddNewRequest".

Также на стороне сервера сериализатор / десериализатор может нуждаться в особом заказе.

JSON

Объект является неупорядоченным коллекция ноль или более имя / значение пары, где имя представляет собой строку и значение - это строка, число, логическое значение, null, объект или массив.

2 голосов
/ 02 июня 2011

Мы не знаем ваш код, который обрабатывает эти «запросы», но чтобы ответить на ваш вопрос:

Да, порядок элементов в 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 голос
/ 02 июня 2011

Переименование имени свойства в запросе # 1

Вы пытались переименовать AddNewRequest в PatientAddNewRequest в первом запросе?Какая разница?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...