У меня проблемы с API, который возвращает responseBody с несколькими escape-последовательностями, что делает невозможным использование JSON.parse на нем. Мне уже удалось вылечить его и как-то улучшить его чтение, но по-прежнему невозможно использовать JSON.parse или какую-либо другую функцию. Мне нужно относиться к этому так, чтобы я мог читать его как JSON.

Это мой responseBody: {"options":{"host":"10.251.28.20","port":"10002","path":"/ScadaHistJson/GetData","method":"POST","headers":{"Content-Type":"application/json","Content-Length":128}},"responseBody":"{\"json\":\"[[\\\"0201013667\\\",\\\"035ET228327\\\",\\\"6707036-1\\\",201,10,\\\"\\\\\\/Date(1570724413000)\\\\\\/\\\",\\\"\\\\\\/Date(1570725591000)\\\\\\/\\\",\\\"R BELA VISTA,794,CS 05 CEP-09843120 Bairro:JARDIM DA REPRESA Cidade:SAO BERNARDO DO CAMPO\\/SP\\\",\\\"035ET228327\\\",null,\\\"N\\\",19.63,\\\"\\\\\\/Date(1570724413000)\\\\\\/\\\",\\\"\\\\\\/Date(1570726844000)\\\\\\/\\\",null,\\\"\\\\\\/Date(1570724413000)\\\\\\/\\\",\\\"\\\\\\/Date(1570724413000)\\\\\\/\\\",null,\\\"\\\\\\/Date(1570724580000)\\\\\\/\\\",\\\"\\\\\\/Date(1570724580000)\\\\\\/\\\",\\\"\\\\\\/Date(1570724640000)\\\\\\/\\\",\\\"\\\\\\/Date(1570724640000)\\\\\\/\\\",\\\"\\\\\\/Date(1570725591000)\\\\\\/\\\",0,\\\"AM003\\\",8.83]]\",\"message\":\"SUCCESS\",\"status\":0}"}

Я использовал JSON.stringify (eval ("(" + INSIGHT.responseBody + ")")) и получил следующий результат:

"{\"json\":\"[[\"0201013667\",\"035ET228327\",\"6707036-1\",201,10,\"/Date(1570724413000)/\",\"/Date(1570725591000)/\",\"R BELA VISTA,794,CS 05 CEP-09843120 Bairro:JARDIM DA REPRESA Cidade:SAO BERNARDO DO CAMPO/SP\",\"035ET228327\",null,\"N\",19.63,\"/Date(1570724413000)/\",\"/Date(1570726844000)/\",null,\"/Date(1570724413000)/\",\"/Date(1570724413000)/\",null,\"/Date(1570724580000)/\",\"/Date(1570724580000)/\",\"/Date(1570724640000)/\",\"/Date(1570724640000)/\",\"/Date(1570725591000)/\",0,\"AM003\",8.83]]\",\"message\":\"SUCCESS\",\"status\":0}"

Кто-нибудь знает, как я могу это решить?

0
Daniel Teles 4 Дек 2019 в 18:37

1 ответ

На самом деле responseBody - это действительный json (RFC 8259). Я тестировал его с помощью (https://jsonformatter.curiousconcept.com/).

Если у вас возникли проблемы с получением содержимого из свойства массива "json", я попытался выполнить двойной анализ responseBody следующим образом:

  const response = JSON.parse(INSIGHT.responseBody);
  const values = JSON.parse(response.json);
0
Anthony Del Rosario 4 Дек 2019 в 19:04