如何在C# XAML Windows 8 Metro应用程序中解析/反序列化JSON字符串?

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

请看这个 - Armand
3个回答

6

Windows Store Apps 的官方 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() 来解析字符串、布尔、数字和 null 值。

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

您不需要添加任何库。


0
在使用JSON REST服务时,我发现反序列化JSON的最佳方法是使用HttpContentExtensions类,该类包含了与HttpClient一起使用的ReadAsASync(HTTP内容)。可以通过安装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;

0

如果您在其他.NET框架中使用过Json.NET,则可以通过NuGet将该库添加到Windows Store应用程序项目中。

以下是一些示例:

  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 name = (string)jObject["Name"]; // Programming F#

  3. Json转数组

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

    JArray array = JArray.Parse(json);

    foreach (var item in array) { string name = (string)item; }

您可以在这里找到Json.NET文档。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接