sel*_*rai 3 .net silverlight-4.0 windows-phone-7 c#-4.0
我在Windows Phone 7中创建了一个Web服务应用程序.这是从下面的uri获取的JSON数组.... [{ "ID":4 "名称": "班加罗尔"},{ "ID":1, "名称": "奈"},{ "ID":3 "名称": "海得拉巴" },{ "ID":2, "名": "孟买"}] ...
列表项=(列表)ds.ReadObject(msnew); 在这一行中有一个错误(它在运行时说).
反序列化type对象时出错.根级别的Data无效.第1行,第1位.
编码:
public MainPage(){InitializeComponent(); }
[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);
}
Run Code Online (Sandbox Code Playgroud)
你要做的事情有2个错误.
你用的是DataContractSerializer
代替DataContractJsonSerializer
.您尝试使用的是期望XML,而不是JSON.
您正在尝试反序列化为单个Item
,然后将其转换为a List<Item>
,而不是数组,这是json包含的内容.
试试这个:
var ds = new DataContractJsonSerializer(typeof(Item[]));
var msnew = new MemoryStream(Encoding.UTF8.GetBytes(MyJsonString));
Item[] items = (Item[])ds.ReadObject(msnew);
Run Code Online (Sandbox Code Playgroud)
如果您以后想要,可以将数组转换为列表.
归档时间: |
|
查看次数: |
3091 次 |
最近记录: |