从System.JSONParser到JsonParser的非法分配

时间:2019-04-15 20:00:36

标签: json http salesforce httpresponse http-protocols

在JsnoToApex类中,我尝试从https://openweathermap.org/current获取JSON文件。当我尝试解析JSON.CreateParses时,出现以下错误:从System.JSONParser到JsonParser的非法分配

我尝试制作显示伦敦天气的API。

具有共享类JsonToApex的

public {

@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 :(得分:0)

问题出在第一个JSONParser中。我必须添加System.JSONParser才能使其正常工作。

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

答案 1 :(得分:0)

您可能有两种方法:

  1. 如果您已经将JSON映射到Apex类,则可以使用
JSON2Apex aClass = (JSON2Apex) System.JSON.deserialize(resp, JSON2Apex.class);

其中JSON2Apex是映射Apex类。

  1. 使用JSON.deserializeUntyped(String jsonString)将JSON反序列化为Apex类中的任何Object,例如:
Map<String, Object> objMap = (Map<String, Object>) JSON.deserializeUntyped(resp);