使用 Windows Phone 7 解析包含数组的 JSON 对象
本文关键字:数组 JSON 对象 包含 Windows Phone 使用 | 更新日期: 2023-09-27 18:32:47
好的,我遇到了一些困难。
我的 JSON 就像
{ "names" : [ {"name":"bla"} , {"name":"bla2"} ] }
我正在尝试做本教程,但由于 JSON 不同,它不起作用。
我必须在这种方法中放入什么?我不知道创建一个包含我的列表的"包装"类还是直接使用 JsonObject 更好。你能给我一个片段吗?我对 C# 有点陌生。
void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
DataContractJsonSerializer ser = null;
try
{
???
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
提前感谢!
使用 Json.Net(支持 Windows Phone)
string json = @"{ ""names"" : [ {""name"":""bla""} , {""name"":""bla2""} ] }";
var dict = (JObject)JsonConvert.DeserializeObject(json);
foreach (var obj in dict["names"])
{
Console.WriteLine(obj["name"]);
}
或者,如果您想以类型安全的方式使用它
var dict = JsonConvert.DeserializeObject<RootClass>(json);
foreach (var obj in dict.names)
{
Console.WriteLine(obj.name);
}
public class RootClass
{
public MyName[] names { get; set; }
}
public class MyName
{
public string name { get; set; }
}
我正常使用 JSON.NET(http://james.newtonking.com/projects/json-net.aspx),所以我的代码可能会有所不同。
对于列表内容,我会选择具有如下名称属性的类:
public class NameClass {
public string name { get;set; }
}
然后你应该能够反序列化 JSON.NET List<NameClass>
:
List<NameClass> result = JsonConvert.Deserialize<List<NameClass>>(jsonString);
这是我写出来的,所以也许,它不能通过复制和粘贴进行编译,但它应该作为一个示例。
使用 .NET DataContractJsonSerializer 需要定义一个映射 json 对象的类。 像这样的东西(如果我没记错的话):
/// <summary>
///
/// </summary>
[DataContract]
public class Result
{
/// <summary>
///
/// </summary>
[DataMember(Name = "name")]
public string Name
{ get; set; }
}
/// <summary>
///
/// </summary>
[DataContract]
public class Results
{
/// <summary>
///
/// </summary>
[DataMember(Name = "names")]
public List<Result> Names
{ get; set; }
}
然后在事件处理程序中:
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Results));
var results = (Results)serializer.ReadObject(SOME OBJECT HOLDING JSON, USUALLY A STREAM);