Проверьте, является ли JSON из ответа NULL или нет - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь проверить, является ли ответ от метода API GET пустым. Ответ выглядит как

{
    "@odata.context": "https://dev.com/data/$metadata#Customers",
    "value": []
}

Мне нужно проверить, является ли массив значений пустым или нет, и выполнить необходимые шаги, описанные ниже, это то, что я пытался

public class deserializeData
{
    public String @odata_context {get;set;} // in json: @odata.context
    public List<Value> value {get;set;}
}

public class getDataFromExternalSystem{
  public string getDataFrom(){
    .......
    Http http1 = new Http();
    HttpRequest req1 = new HttpRequest();
    req1.setEndpoint(endPoint);
    req1.setMethod('GET');
    req1.setHeader('Authorization','Bearer '+atoken);
    HttpResponse res1 = http1.send(req1);
    System.debug('Response Body=========' + res1.getBody());

    deserializeData dsData = (deserializeData)JSON.deserialize(res1.getbody(),deserializeData.class);

    if(dsData.value.size = null) {
       ......
    }
    else{
       ......
    }}

Но я получаю ниже ошибку, как

enter image description here

1 Ответ

0 голосов
/ 17 февраля 2020

@odata_context не является юридическим идентификатором в Apex. @ используется для введения аннотаций.

Если вы используете JSON2Apex, что имеет место, вам нужно изменить имя свойства на какое-то допустимое для Apex (например, odata_context ) и внесите соответствующее изменение в метод парсера. Например, когда JSON2Apex генерирует

                if (text == '@odata.context') {
                    @odata_context = parser.getText();

, вам нужно заменить этот идентификатор на новый, который вы выберете.

...