У меня возникают трудности с получением данных из JSON, которые были автоматически преобразованы из XML, и я был бы признателен за опыт, позволяющий определить наилучший способ достижения моей цели.
У меня есть сообщение xml, которое Я читаю из спокойного сервиса. Я включаю сокращенную анонимную версию сообщения xml внизу поста для справки. Сообщение содержит информацию о человеке, и человек может иметь несколько адресов. Каждый адрес может иметь от нуля до 6 строк адреса, и если значения строки адреса не заполнены, система не включает их в документ xml.
Я конвертирую его в Json, используя функцию json (). Затем я анализирую json, чтобы сделать значения легкодоступными.
Здесь я сталкиваюсь с проблемой.
Когда я преобразую сообщение в Json, используя json () Функция Я получаю схему Json ниже (см. внизу поста). Обратите внимание, что адреса не в формате массива, на самом деле ни один из них не является.
Я не уверен, как извлечь значения из этого способа, который будет работать для других сообщений PersonMessageService, которые не являются указанными c сообщение.
Мои вопросы:
- Это автоматически создает json неуклюже и не очень удобно?
- Есть ли лучший способ для генерации json из xml в приложении logi c?
- Как получить значения из моего json после преобразования?
XML Сообщение
<PersonMessageService version="1.5.3">
<response timestamp="2020-03-31T08:48:42.273557+01:00">
<status>SUCCESS</status>
<description/>
<receipt>A227C1E61EFA2B05E8530100007F6E90</receipt>
</response>
<payload>
<PersonData>
<MessageMeta>
<messageId>123456</messageId>
<MessageChecksum>c7875a0fd6869bb1234c82bd00712345</MessageChecksum>
</MessageMeta>
<personRecord SystemKey="123456789" timestamp="2020-01-31T08:48:35">
<GUID>9889898</GUID>
<idNumber>3578951</idNumber>
<firstName>Joe</firstName>
<surname>Bloggs</surname>
<title>Mr</title>
<gender>M</gender>
<dateOfBirth>1980-01-01</dateOfBirth>
<homeAddress addressObjectId="10001" timestamp="2018-11-12T14:58:01">
<address>
<addressLine1>123 Fake St</addressLine1>
<country>United States</country>
</address>
<email>Joe@bloggs.com</email>
<mobile>5558878558</mobile>
</homeAddress>
<termAddress addressObjectId="10002" timestamp="2018-11-12T15:07:01">
<address/>
<email>joebloggs@hotmail.com</email>
</termAddress>
<workAddress addressObjectId="10003" timestamp="2018-11-12T15:07:01">
<address/>
</workAddress>
<mailingLabel addressObjectId="10004" timestamp="2018-11-12T14:58:01">
<address>
<addressLine1>58 Fake Bvd</addressLine1>
<addressLine2>Fake County</addressLine2>
<country>United States</country>
</address>
</mailingLabel>
<referenceNumbers/>
<personIndicators>
<country/>
<nationality/>
<marketingCorrespondence>N</marketingCorrespondence>
</personIndicators>
</personRecord>
</PersonData>
</payload>
После автоматического преобразования c в JSON с использованием функции JSON ()
{
"PersonMessageService": {
"@version": "1.5.3",
"response": {
"@timestamp": "2020-03-31T08:48:42.273557+01:00",
"status": "SUCCESS",
"description": null,
"receipt": "A227C1E61EFA2B05E8530100007F6E90"
},
"payload": {
"PersonData": {
"MessageMeta": {
"messageId": "123456",
"MessageChecksum": "c7875a0fd6869bb1234c82bd00712345"
},
"personRecord": {
"@SystemKey": "123456789",
"@timestamp": "2020-01-31T08:48:35",
"GUID": "9889898",
"idNumber": "3578951",
"firstName": "Joe",
"surname": "Bloggs",
"title": "Mr",
"gender": "M",
"dateOfBirth": "1980-01-01",
"homeAddress": {
"@addressObjectId": "10001",
"@timestamp": "2018-11-12T14:58:01",
"address": {
"addressLine1": "123 Fake St",
"country": "United States"
},
"email": "Joe@bloggs.com",
"mobile": "5558878558"
},
"termAddress": {
"@addressObjectId": "10002",
"@timestamp": "2018-11-12T15:07:01",
"address": null,
"email": "joebloggs@hotmail.com"
},
"workAddress": {
"@addressObjectId": "10003",
"@timestamp": "2018-11-12T15:07:01",
"address": null
},
"mailingLabel": {
"@addressObjectId": "10004",
"@timestamp": "2018-11-12T14:58:01",
"address": {
"addressLine1": "58 Fake Bvd",
"addressLine2": "Fake County",
"country": "United States"
}
},
"referenceNumbers": null,
"personIndicators": {
"country": null,
"nationality": null,
"marketingCorrespondence": "N"
}
}
}
}
}
}