Ответ Json будет десериализован в Apex salesforce lightning

Я получаю ответ Json ниже, нажав RestAPI.

**

[
    {
        "index": 0,
        "object": {
            "attributes": {
                "ID": [
                    {
                        "type": "configuration/entityTypes/Customer/attributes/ID",
                        "ov": true,
                        "value": "5",
                        "uri": "entities/attributes/ID/2Cqf5xG2"
                    },
                    {
                        "type": "configuration/entityTypes/Customer/attributes/ID",
                        "ov": true,
                        "value": "3028",
                        "uri": "entities/attributes/ID/fto38ZRR"
                    }
                ],
                "IgpId": [
                    {
                        "type": "configuration/entityTypes/Customer/attributes/IgpId",
                        "ov": true,
                        "value": "1911",
                        "uri": "entities/attributes/IgpId/20ft8omYM"
                    }
                ],
                "IgpName": [
                    {
                        "type": "configuration/entityTypes/Customer/attributes/IgpName",
                        "ov": true,
                        "value": "Dr. heath",
                        "uri": "entities/attributes/IgpName/20ft8oe1q"
                    }
                ],
                "IgpID": [
                    {
                        "type": "configuration/entityTypes/Customer/attributes/IgpID",
                        "ov": true,
                        "value": "1872",
                        "uri": "entities/attributes/IgpID/20ft8oiI6"
                    }
                ],
                "IgpNAME": [
                    {
                        "type": "configuration/entityTypes/Customer/attributes/IgpNAME",
                        "ov": true,
                        "value": "Dr Jc crook",
                        "uri": "entities/attributes/IgpNAME/20ft8oqoc"
                    }
                ]
            }
        },
        "successful": true
    }
]

**

Я пытаюсь сохранить значения CoachID (3028), IgpID (1872), IgpId (1911), IgpName (Dr. Heath), IgpNAME (Dr Jc Crook) в строковых переменных в классе APex.

Я использовал для этого карту, но не смог получить правильные значения. Я хотел получить указанные выше значения в списке и вернуть этот список из функции.

Кто-нибудь может мне в этом помочь? Я не должен делать это с помощью оболочки.

С уважением, Мохит


person Mohit Mathuriya    schedule 01.07.2020    source источник


Ответы (1)


Это невозможно сделать как прямой вызов JSON.deserialize, потому что некоторые поля являются зарезервированными ключевыми словами в Apex. Насколько строг запрет на упаковку? Я бы не хотел печатать это от руки, но вы можете перейти на https://json2apex.herokuapp.com/, установите флажок для явного синтаксического анализатора (опять же, поскольку вы зарезервировали ключевые слова, это все равно произойдет) и, что ж, у вас есть готовый класс и классный метод в модульном тесте / примере использования кода. Он проверен в боях, если вы не можете его использовать, значит, у вашего проекта большие проблемы;)

Если вам действительно нужно делать это в одиночку и с картами, это будет что-то вроде https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_class_System_Json.htm., пример для deserializeUntyped

person eyescream    schedule 01.07.2020
comment
Спасибо, я вернул ответ API в строковой форме и обработал его в JS, и он работает. - person Mohit Mathuriya; 02.07.2020
comment
Ха, конечно, это тоже работает. Если вам действительно не нужны результаты в Apex, то анализировать их было бы пустой тратой времени, просто передайте их прямо :) - person eyescream; 02.07.2020