【问题标题】:How to parse/deserialize a JSON string in C# XAML Windows 8 Metro App?如何在 C# XAML Windows 8 Metro App 中解析/反序列化 JSON 字符串?
【发布时间】:2014-08-18 22:55:48
【问题描述】:

我正在开发一个 C#/XAML Metro 应用程序,我在其中使用 JSON REST 服务。如何将 JSON 响应反序列化为文本或自定义对象?

【问题讨论】:

标签: json windows-8 windows-runtime windows-store-apps microsoft-metro


【解决方案1】:

Windows 应用商店应用 的官方 JSON API 位于 Windows.Data.Json 命名空间中:

  • JsonObject.Parse()new JsonOject() 用于对象,它的工作方式更像是 Dictionary<TKey, TValue>
  • JsonArray.Parse()new JsonArray() 用于数组,它的工作方式不像 List<TValue>
  • JsonValue.Parse()JsonValue.CreateStringValue()JsonValue.CreateBooleanValue()JsonValue.CreateNumberValue() 用于字符串、布尔值、数字和空值。

在这里查看一些示例:http://msdn.microsoft.com/en-us/library/windows/apps/hh770289.aspx

您无需添加任何库。

【讨论】:

    【解决方案2】:

    如果您在其他 .NET 配置文件中使用过 Json.NET,您可以通过 NuGet 将该库添加到您的 Windows 应用商店应用项目中。

    这里有一些例子:

    1. 对象到 Json

      var obj = new { Name = "Programming F#", Author = "Chris Smith" };

      string json = JsonConvert.SerializeObject(obj, Formatting.Indented);

    2. 查询Json

      var json = @"{""Name"": ""Programming F#"",""Author"": ""Chris Smith""}";

      var jObject = JObject.Parse(json);

      字符串名称 = (string)jObject["Name"]; // 编程 F#

    3. Json 到数组

      string json = @"['F#', 'Erlang', 'C#', 'Haskell', 'Prolog']";

      JArray 数组 = JArray.Parse(json);

      foreach(数组中的变量项) { 字符串名称=(字符串)项目; }

    您可以找到 Json.NET 文档here

    【讨论】:

      【解决方案3】:

      当使用 JSON REST 服务时,我发现到目前为止反序列化 JSON 的最佳方法是使用包含 ReadAsASync(HTTP Content) 和 HttpClient 的 HttpContentExtensions 类。这个扩展类可以通过安装Microsoft ASP.NET Web API 2.2 Client NUGET package找到。

      发出网络请求和反序列化就这么简单:

      private const string baseUri = "https://weu.google.co/";
      private HttpClient client = new HttpClient();
      var result = await client.GetAsync([Your URI]);
      var data  = await result.Content.ReadAsAsync<YourClass>();
      return data.Value;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-14
        • 1970-01-01
        • 2012-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多