【问题标题】:Windows Phone Deserialize to List JSON .NETWindows Phone 反序列化以列出 JSON .NET
【发布时间】:2013-01-23 11:22:58
【问题描述】:

我在 WP7 上使用 JSON.Net 反序列化字符串时遇到问题。我有这个 JSON 字符串:

JSON Example

我已经从中生成了一个类 (http://json2csharp.com/)。

       void GETHotels()
        {
            WebClient c = new WebClient();
            c.DownloadStringAsync(new Uri(@"..."));
            c.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadStringCompleted);
        }

        DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {         
            var deserialized = JsonConvert.DeserializeObject<List<Classes.RootObject>>(e.Result);
        }

但是当我尝试反序列化 e.Result 时,我得到了异常:

将值“[{"hotId": ... 6390285}]”转换为类型时出错 'System.Collections.Generic.List`1[Hotel_cz.Classes.RootObject]'。小路 '',第 1 行,位置 971。

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 你能显示 RootObject 的代码吗?
  • 公共类 RootObject { public int hotId { get;放; } 公共字符串名称 { 获取;放; } 公共双纬度 { 得到;放; } 公共双经度 { 得到;放; } }

标签: c# .net json windows-phone-7 deserialization


【解决方案1】:

这应该可以...

var hotels = JsonConvert.DeserializeObject<List<Hotel>>(e.Result);

public class Hotel
{
    public int hotId;
    public string Name;
    public double latitude;
    public double longitude;
}

【讨论】:

  • 我试了一下,但我得到了同样的异常...可能是 e.Result 中的一些问题?
  • @user1041802 我用你发布的 json 试了一下,效果很好
  • @user1041802 我不认为这是安装问题。确保Classes.RootObject 的定义等于我的Hotel(即,它可能是一个包含酒店的类?)
  • 我创建了解决方案... e.Result 中的字符串格式不正确(在元素之间添加了 '\\' 之前 '[' 是 '"' 并且之后 ']' 是 '" '... 我必须替换并删除这个字符... string s = e.Result.Replace("\\","").Remove(0,1); s = s.Remove(s.Length - 1, 1);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多