Разобрать ключ JSON, содержащий строку JSON - PullRequest
0 голосов
/ 28 марта 2019

У меня есть тело ответа, в котором есть ключ "response". Я пытаюсь получить значение TransactionLogId.

{
"response": "{\"messageHeader\":{\"transactionLogId\":\"DCBB028A_B543_4DF6_B8C0_DF1215324841\",\"action\":\"BOOK\"},\"properties\":{\"contextObjects\":[{\"recordId\":\"a0D1U000001bFMPUA2\",\"statusSummary\":{\"FaultRecInfoArray\":{\"FaultMsgRec\":{\"ErrLoc\":\"DDACCTADD\",\"ErrCat\":\"Error\",\"ErrElem\":\"AccountId.AcctId AccountId.AcctType\",\"ErrDesc\":\"Account already exists\",\"ErrElemVal\":\"209171/D\",\"ErrCode\":\"2\"}}},\"externalId\":\"209171\",\"relatedObjects\":[{\"recordId\":\"0011U0000052ESEQA2\",\"statusSummary\":\"Already existed on core.\",\"externalId\":\"JAA0100\",\"statusCode\":\"BOOKED\"}],\"statusCode\":\"NOT_PERSISTED\"}]}}"

}

Вот скрипт:

var jsonData = JSON.parse(responseBody);
var setId = JSON.parse(JSON.stringify(jsonData.response));
console.log("Id:"+setId.transactionLogId);

Мой вывод на консоль:

Id:undefined

Я изменил console.log на console.log ("Id:" + setId); с выходом консоли:

Id:{"messageHeader":{"transactionLogId":"DCBB028A_B543_4DF6_B8C0_DF1215324841","action":"BOOK"},"properties":{"contextObjects":[{"recordId":"a0D1U000001bFMPUA2","statusSummary":{"FaultRecInfoArray":{"FaultMsgRec":{"ErrLoc":"DDACCTADD","ErrCat":"Error","ErrElem":"AccountId.AcctId AccountId.AcctType","ErrDesc":"Account already exists","ErrElemVal":"209171/D","ErrCode":"2"}}},"externalId":"209171","relatedObjects":[{"recordId":"0011U0000052ESEQA2","statusSummary":"Already existed on core.","externalId":"JAA0100","statusCode":"BOOKED"}],"statusCode":"NOT_PERSISTED"}]}}

Я не уверен, почему я не могу заставить его разобраться правильно. Есть идеи?

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Я успешно настраиваю вывод консоли, используя следующий скрипт.

var jsonData = JSON.parse(responseBody);
var output = JSON.parse(jsonData.response);
console.log(output.messageHeader.transactionLogId);

Спасибо

0 голосов
/ 28 марта 2019

Нет необходимости в JSON.stringify. Это уже строка.

Основываясь на информации выше, вам нужно сделать responseBody.response

var jsonData = JSON.parse(responseBody.response);

Я вижу, что вы получаете объект JSON с сервера, который имеет атрибут ответа. А атрибутом ответа является необработанная строка JSON. Так что вам нужно сделать выше.

Редактировать: Я попробовал ваш фиктивный API, и он работает, как я предложил выше для меня. На этот раз я предоставлю полный вызов, хотя:

$.ajax({url: "https://my.api.mockaroo.com/postman_response.json?key=5cbc25b0&__method=POST", success: function(responseBody){
console.log(JSON.parse(responseBody.response).messageHeader.transactionLogId);
}});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...