C# 针对 ARM : How to deserialize JSON?

标签 c# json uwp windows-10-iot-core

我正在为 Windows 10 IoT 编写我的第一个 C# 应用程序。我的一切正常,我的网络请求等,我能够检索我想要的内容以呈现给用户。但是...它是 JSON 格式的,我无法将其视为常规变量,因此我只能选择一个属性。

JSON Result
{  
   "date":"2017-07-09",
   "period":"year",
   "views":970347,
   "visitors":150013,
   "likes":136,
   "reblogs":13,
   "comments":1099,
   "followers":145
}

我尝试为 NewtonSoft JSON (JSON.NET) 添加 Nuget 包,但这似乎在 rPI 的 ARM CPU 上不起作用。所以我开始改用 Windows.Data.JSON.JsonObject 类。

我在这一行中使用 JSonObject.Parse() 为我的应用程序解析 JSON 响应,然后在调试时,我看到以下内容。

JsonObject meme = JsonObject.Parse(ResponseContent);

enter image description here

我可以在 meme 下看到我想要的所有值(value)观。 JSonObject 提供了 GetNamedString()GetNamedObject() 方法,但我收到了这两种方法的终止错误:{"A method was called at an unexpected time.\r\n\r\n这不是字符串值。使用 ValueType 属性获取类型。"

我来自 PowerShell,我只是将响应转储到 $response 中,并使用 $Response.Views 提取键/值对,但我'我们不知道这在 C# 中应该如何工作。我真正不明白的是为什么它在解析后似乎仍保留在 JSON 中。

我的目标是将来自 JSON 的 Followers 和 Visitors 结果分配给一个变量,以便我以后可以引用它们。 webrequest 有效...我似乎无法解析 JSON。

最佳答案

Watch View 上的 JSON 实际上只是为了显示,但它已经是 JsonObject 类型,如 Type 列中所示。

这是说该方法将不起作用,因为您尝试提取的类型无法由 GetNamedString()GetNamedObject() 处理。您还应该有一个 GetNamedValue() 方法来处理数字:

meme.GetNamedValue("views").GetNumber()

您还可以像这样通过索引访问值:

meme["views"].GetNumber()

如果你想确保它在返回的 JSON 值方面不会在边缘情况下失败,你可以使用 meme["whateverJSONkey"].ValueType 属性和开关/大小写防止异常

关于C# 针对 ARM : How to deserialize JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45003143/

相关文章:

c# - 使用 autofac 解析方法内部类的实例

c# - 并非所有代码路径都返回值: Unity

c# - 为什么 C# 属性如此有限?

javascript - JSON.stringify() - 如何知道替换器的当前深度

c# - UWP: MapControl 透明背景

c# - 如何设计一个对象来表示所有 HTML 表单元素?

javascript - 将 header 作为参数传递给 javascript post 请求(react-native)

javascript - YouTube 视频持续时间 API v3

c# - 已启用包签名但未指定指纹或证书路径

uwp - UWP 中的 ReadOnly 属性