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

时间:2013-09-30 12:15:28

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

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

3 个答案:

答案 0 :(得分: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

您无需添加任何库。

答案 1 :(得分:0)

如果您在其他.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 = @“{”“姓名”“:”“编程F#”“,”“作者”“:”“Chris Smith”“}”;

    var jObject = JObject.Parse(json);

    string name =(string)jObject [“Name”]; //编程F#

  3. Json to Array

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

    JArray array = JArray.Parse(json);

    foreach(数组中的var项) {     string name =(string)item; }

  4. 您可以找到Json.NET文档here

答案 2 :(得分:0)

在使用JSON REST服务时,我发现到目前为止,反序列化JSON的最佳方法是使用包含ReadAsASync(HTTP内容)和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;