3

I am developing a C#/XAML metro application in which I comsume a JSON REST Services. How can I deserialize a JSON response into a text or a custom object?

4

3 回答 3

6

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

您无需添加任何库。

于 2013-10-01T04:38:01.790 回答
0

在使用 JSON REST 服务时,我发现迄今为止反序列化 JSON 的最佳方法是使用包含 ReadAsASync(HTTP Content) 和 HttpClient的HttpContentExtensions类。可以通过安装Microsoft ASP.NET Web API 2.2 客户端 NUGET 包找到此扩展类。

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

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;
于 2014-08-18T14:55:48.927 回答
0

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

这里有些例子:

  1. 反对 Json

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

    字符串 json = JsonConvert.SerializeObject(obj, Formatting.Indented);

  2. 查询 Json

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

    var jObject = JObject.Parse(json);

    字符串名称=(字符串)jObject[“名称”];// 编程 F#

  3. Json 到数组

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

    JArray 数组 = JArray.Parse(json);

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

您可以在此处找到 Json.NET 文档。

于 2013-10-01T03:06:57.470 回答