我正在开发一个C#/ XAML metro应用程序,我在其中使用JSON REST服务。如何将JSON响应反序列化为文本或自定义对象?
答案 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应用商店应用项目中。
以下是一些例子:
对象到Json
var obj = new {Name =“Programming F#”,Author =“Chris Smith”};
string json = JsonConvert.SerializeObject(obj,Formatting.Indented);
查询Json
var json = @“{”“姓名”“:”“编程F#”“,”“作者”“:”“Chris Smith”“}”;
var jObject = JObject.Parse(json);
string name =(string)jObject [“Name”]; //编程F#
Json to Array
string json = @“['F#','Erlang','C#','Haskell','Prolog']”;
JArray array = JArray.Parse(json);
foreach(数组中的var项) { string name =(string)item; }
您可以找到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;