我在 Windows Phone 7 中创建了一个 Web 服务应用程序。这是从下面的 uri 获取的 JSON 数组。
...[{"id":4,"name":"班加罗尔"},{"id":1,"name":"钦奈"},{"id":3,"name":"海得拉巴" },{"id":2,"name":"孟买"}]...
List item = (List)ds.ReadObject(msnew);
In this line one bug(it says while run).
There was an error deserializing the object of type.Data at the root level is invalid. Line 1, position 1.
coding:
公共主页()
{
初始化组件();
}
[DataContract]
public class Item
{
[DataMember]
public int id
{
get;
set;
}
[DataMember]
public string name
{
get;
set;
}
}
private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
WebClient wc = new WebClient();
wc.DownloadStringAsync(new Uri("http://75.101.161.83:8080/CityGuide/Cities?authId=CITY4@$pir*$y$t*m$13GUID*5"));
wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
}
void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
string MyJsonString = e.Result;
// MessageBox.Show(e.Result);
DataContractSerializer ds = new DataContractSerializer(typeof(Item));
MemoryStream msnew = new MemoryStream(Encoding.UTF8.GetBytes(MyJsonString));
List<Item> item = (List<Item>)ds.ReadObject(msnew);
}
您尝试做的事情有两个错误。
你正在使用DataContractSerializer
代替DataContractJsonSerializer
。您尝试使用的是 XML,而不是 JSON。
您正在尝试反序列化为单个Item
然后将其转换为List<Item>
,而不是 json 包含的数组。
试试这个:
var ds = new DataContractJsonSerializer(typeof(Item[]));
var msnew = new MemoryStream(Encoding.UTF8.GetBytes(MyJsonString));
Item[] items = (Item[])ds.ReadObject(msnew);
如果您以后愿意,可以将数组转换为列表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)