在JsnoToApex类中,我尝试从 https://openweathermap.org/current 获取JSON文件。当我尝试解析 JSON 时。CreateParses 我收到以下错误:从 System.JSONParser 到 JsonParser 的非法赋值
我尝试制作显示伦敦天气的API。
public with shared class 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/映射它
问题出在第一个 JSONParser。我不得不添加System.JSONParser才能使其工作。
System.JSONParser parser = JSON.createParser(resp);
您可能有两种方法:
- 如果您已经将 JSON 映射到 Apex 类,则可以使用
JSON2Apex aClass = (JSON2Apex) System.JSON.deserialize(resp, JSON2Apex.class);
其中JSON2Apex
是映射 Apex 类。
- 使用该
JSON.deserializeUntyped(String jsonString)
将 JSON 反序列化为 Apex 类中的任何Object
,例如:
Map<String, Object> objMap = (Map<String, Object>) JSON.deserializeUntyped(resp);