我正在开发一个使用C#/XAML框架的Metro应用程序,其中我需要调用JSON REST服务。如何将JSON响应反序列化为文本或自定义对象?
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
您不需要添加任何库。
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 Store应用程序项目中。
以下是一些示例:
对象转Json
var obj = new { Name = "Programming F#", Author = "Chris Smith" };
string json = JsonConvert.SerializeObject(obj, Formatting.Indented);
查询Json
var json = @"{""Name"": ""Programming F#"",""Author"": ""Chris Smith""}";
var jObject = JObject.Parse(json);
string name = (string)jObject["Name"]; // Programming F#
Json转数组
string json = @"['F#', 'Erlang', 'C#', 'Haskell', 'Prolog']";
JArray array = JArray.Parse(json);
foreach (var item in array) { string name = (string)item; }
您可以在这里找到Json.NET文档。