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?
3 回答
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
您无需添加任何库。
在使用 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;
如果您在其他 .NET 配置文件中使用过Json.NET,则可以通过 NuGet 将该库添加到您的 Windows 应用商店应用项目中。
这里有些例子:
反对 Json
var obj = new { Name = "Programming F#", Author = "Chris Smith" };
字符串 json = JsonConvert.SerializeObject(obj, Formatting.Indented);
查询 Json
var json = @"{""Name"": ""Programming F#"",""Author"": ""Chris Smith""}";
var jObject = JObject.Parse(json);
字符串名称=(字符串)jObject[“名称”];// 编程 F#
Json 到数组
string json = @"['F#', 'Erlang', 'C#', 'Haskell', 'Prolog']";
JArray 数组 = JArray.Parse(json);
foreach (var item in array) { string name = (string)item; }
您可以在此处找到 Json.NET 文档。