网络服务 JSON 查询异常


async private void webServiceGetPoints()
    {
        var client = new HttpClient();
        var response = await client.GetAsync(new Uri("//private//"));
        var result = await response.Content.ReadAsStringAsync();
        JArray jsonVal = JArray.Parse(result) as JArray;
        dynamic taglist = jsonVal;
        foreach (dynamic tag in taglist)
        {
            Collection.Add(new Tag(tag.name, tag.description, tag.longitude, tag.latitude));
        }
    }

我对这段代码有问题。当我将此 GET 查询设置为 serwer 时,它会返回一个 json。我试图使用它 JSON.NET 将其解析为类,但是当我这样做时,它给我带来了一个例外。我不知道有一个是打开的 App.h.cs文件突出显示该行: if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();

您正在将动态值传递到 Tag 类构造函数中。其中的某些值可能无法转换为类期望的任何值(它们可能是 null,甚至不存在)。

您可以使用类型化转换器,如下所示 Json.Net:

class TagData
{
    public string name { get; set; }
    public int longitude { get; set; }
    //...
}
var item JsonConvert.DeserializeObject<List<TagData>>(result);

特别是对于来自 Web 服务的数据,您永远不应该依赖动态,并始终使用检查正确转换的内容。

最新更新