【发布时间】:2018-12-15 18:54:59
【问题描述】:
我正在努力获取从下面的地理编码 REST 调用返回的数据(我已删除我的 app_id 和 app_code,因此您无法运行下面的 url):
https://geocoder.api.here.com/6.2/geocode.json?app_id=[MYAPP ID]&app_code=[我的APP代码]&searchtext=chester
可以在此处找到示例响应:
https://developer.here.com/documentation/geocoder/topics/quick-start-geocode.html
我知道它会返回结果,但我似乎无法将结果传递给我的 C# 应用程序,我不知道我是否错误地构建了类系统,或者我是否做错了什么。我之前已经构建了一个应用程序来读取位置 api,但这个应用程序似乎有所不同。
调用返回正常状态:
public void GeoCode()
{
// BUILD INITIAL STRING BASED ON PARAMETERS
string url = "https://geocoder.api.here.com/6.2/geocode.json?app_id=gpZ1Ym7rwuXs6Xj1TsD8&app_code=4UXmaGFTe30LttFgOY7iqQ&searchtext=" + tbLoc.text;
// RUN THE ASYNCRONOUS COMMAND (I THINK)
StartCoroutine(GetText(url));
}
IEnumerator GetText(string url)
{
// CREATE WEB REQUEST WITH SPECIFIED URL
UnityWebRequest www = UnityWebRequest.Get(url);
// RETURN RESULTS FROM ASYNC COMMAND
yield return www.SendWebRequest();
// PARSE JSON RESPONSE
RootObject RootObject = JsonUtility.FromJson<RootObject>(www.downloadHandler.text);
// IF 200 (STATUS OKAY) GATHER RESULTS, ELSE RETURN ERROR
if (www.responseCode == 200)
{
BuildArray(RootObject);
}
else
{
Debug.Log("Call Failed With Error: " + www.responseCode.ToString());
}
}
private void BuildArray(RootObject RootObject)
{
print(RootObject.Response.View[0].Result[0].Location.Address.Label);
}
它尝试运行 BuildArray 函数,但这会返回一个空引用。 (我只是用 NextPageInformation 作为最基本的选项来测试)
下面是我为处理 JSON 而构建的类结构:
public class Address
{
public string Label { get; set; }
}
public class Location
{
public Address Address { get; set; }
}
public class Result
{
public Location Location { get; set; }
}
public class View
{
public List<Result> Result { get; set; }
}
public class Response
{
public List<View> View { get; set; }
}
public class RootObject
{
public Response Response { get; set; }
}
有人可以帮忙吗? 谢谢
【问题讨论】:
-
如果我不得不用一堆 json 做某事,我会复制它,并将其粘贴到 QuickType.io 并让它生成一组类和使用说明,然后将其放回我的程序。 QuickType 非常好,我很想将其作为答案发布,但外部资源有些短暂,并不总是能提供好的 SO 答案。然而,它应该是解决这个问题的一站式服务,包括一些类似“将这行代码粘贴到你的应用程序中,它就可以正常工作”的帮助代码生成