JSONLint говорит правильный JSON, но я не могу получить значения из него в JavaScript - PullRequest
1 голос
/ 27 сентября 2019

Я пытаюсь проанализировать JSON из запроса GET в JavaScript.Я могу запустить его через JSONLint и другие инструменты, и это нормально.Если я копирую / вставляю точный результат в JavaScript, я также могу получить доступ к значениям из объекта.

Вот сокращенный пример того, как выглядит структура JSON:

{
    "odata.metadata": "EXAMPLE.com/$metadata#EXAMPLE.results",
    "value": [{
        "SerialNo_Company": "1",
        "Calculated_AsBuilt": "AsBuilt",
        "SerialNo_SerialNumber": "1",
        "SerialNo_PartNum": "2A",
        "JobHead_RevisionNum": "A",
        "JobMtl_MtlSeq": 30,
        "JobMtl_PartNum": "A123",
        "JobMtl_RevisionNum": "A",
        "JobMtl_Description": "KEY",
        "JobMtl_QtyPer": "1.00000000",
        "JobMtl_IUM": "EA",
        "JobHead_JobNum": "13",
        "JobMtl_IssuedQty": "2.00000000",
        "JobMtl_RequiredQty": "2.00000000",
        "RowIdent": "7e91b43a-897c-49b4-b68f-307b9ba74832"
    }, {
        "SerialNo_Company": "1",
        "Calculated_AsBuilt": "AsBuilt",
        "SerialNo_SerialNumber": "1",
        "SerialNo_PartNum": "2A",
        "JobHead_RevisionNum": "A",
        "JobMtl_MtlSeq": 30,
        "JobMtl_PartNum": "A123",
        "JobMtl_RevisionNum": "A",
        "JobMtl_Description": "KEY",
        "JobMtl_QtyPer": "1.00000000",
        "JobMtl_IUM": "EA",
        "JobHead_JobNum": "14",
        "JobMtl_IssuedQty": "2.00000000",
        "JobMtl_RequiredQty": "2.00000000",
        "RowIdent": "6251fbaf-36d0-4fcf-b65a-9dde70ffb13d"  
    }]
}

Однако этот формат не совсем корректен, то, что он на самом деле выводит, имеет такую ​​структуру:

"{\r\n  \"odata.metadata\":\"EXAMPLE.com/$metadata#Example.results\",\"value\":[\r\n    {\r\n      \"SerialNo_Company\":\"1\",\"Calculated_AsBuilt\":\"AsBuilt\",\"SerialNo_SerialNumber\":\"1\",\"SerialNo_PartNum\":\"2A\",\"JobHead_RevisionNum\":\"A\",\"JobMtl_MtlSeq\":30,\"JobMtl_PartNum\":\"A13518N-28-KS\",\"JobMtl_RevisionNum\":\"A\",\"JobMtl_Description\":\"KEY\",\"JobMtl_QtyPer\":\"1.00000000\",\"JobMtl_IUM\":\"EA\",\"JobHead_JobNum\":\"13\",\"JobMtl_IssuedQty\":\"2.00000000\",\"JobMtl_RequiredQty\":\"2.00000000\",\"RowIdent\":\"111531e1-f4da-4d2d-b980-0074227a474e\"\r\n    }\r\n  ]\r\n}

Когда я пытаюсь запросить первую структуру, когда она жестко запрограммирована в javascript, например,

object.value[0]

, я получаю первое значение, и все хорошо.

Второй не возвращает значение с тем же запросом.Я удалил \r\n, и он не работал.Кроме того, JSON.stringify() добавляет в структуру кучу обратных слешей, и я не знаю почему.

Спасибо за чтение, если вы сделали это так далеко, пожалуйста, помогите.

1 Ответ

0 голосов
/ 27 сентября 2019

Решением было изменить вывод в моем приложении node.js.Я использовал res.json (), и это было двойное кодирование ответа.Вывод привел к читаемому формату javascript оттуда.Спасибо Heretic Monkey за ответ

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