Незаконное присвоение из System.JSONParser JsonParser - PullRequest
0 голосов
/ 15 апреля 2019

В классе JsnoToApex я пытаюсь получить файл JSON из https://openweathermap.org/current. Когда я пытаюсь проанализировать JSON.CreateParses, я получаю следующие ошибки: Недопустимое присвоение из System.JSONParser JsonParser

Я пытаюсь сделать API, который показывает погоду в Лондоне.

публично с классом обмена JsonToApex {

@future(callout=true)
public static void parseJSONResponse() {

    String resp;

    Http httpProtocol = new Http();
    // Create HTTP request to send.
    HttpRequest request = new HttpRequest();
    // Set the endpoint URL.
    String endpoint = 'https://samples.openweathermap.org/data/2.5/weather?q=London,uk&appid=b6907d289e10d714a6e88b30761fae22';
    request.setEndPoint(endpoint);
    // Set the HTTP verb to GET.
    request.setMethod('GET');
    // Send the HTTP request and get the response.
    // The response is in JSON format.
    HttpResponse response = httpProtocol.send(request);

    resp = response.getBody();
    JSONParser parser = JSON.createParser(resp);


    JsonMapper response = (JsonMapper) System.JSON.deserialize(res.getBody(), JsonMapper.class);

}

}

Я ожидаю получить файл Json и в будущем отобразить его, используя https://json2apex.herokuapp.com/

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

У вас может быть два подхода:

  1. Если вы уже сопоставили JSON с классом Apex, вы можете просто использовать
JSON2Apex aClass = (JSON2Apex) System.JSON.deserialize(resp, JSON2Apex.class);

Где JSON2Apex - это класс Apex для отображения.

  1. Используйте JSON.deserializeUntyped(String jsonString) для десериализации JSON для любого Object в классе Apex, например:
Map<String, Object> objMap = (Map<String, Object>) JSON.deserializeUntyped(resp);
0 голосов
/ 16 апреля 2019

Проблема была в первом JSONParser. Мне пришлось добавить System.JSONParser, чтобы он работал.

System.JSONParser parser = JSON.createParser(resp);
...