加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 反序列化包含Dictionary的对象列表

发布时间:2020-12-15 08:40:13 所属栏目:百科 来源:网络整理
导读:我已经看到很多例子似乎表明我正在做的事情应该有效,但无论出于何种原因,它都没有.我正在尝试反序列化一组对象,其中一个属性是Dictionary,如下所示: class Program{ static void Main(string[] args) { var json = "{"Collection":[{"ID":"1243","Di
我已经看到很多例子似乎表明我正在做的事情应该有效,但无论出于何种原因,它都没有.我正在尝试反序列化一组对象,其中一个属性是Dictionary,如下所示:
class Program
{
    static void Main(string[] args)
    {
        var json = "{"Collection":[{"ID":"1243","Dictionary":[{"Key":"color","Value":"red"},{"Key":"size","Value":"large"}]},{"ID":"1243","Value":"blue"},"Value":"small"}]}]}";
        //var json = "[{"ID":"1243","Value":"small"}]}]";
        List<MyObject> myObjects = new JavaScriptSerializer().Deserialize<List<MyObject>>(json);
    }
}

[DataContract]
public class MyObject
{
    [DataMember]
    public string ID { get; set; }

    [DataMember]
    public Dictionary<string,string> Dictionary { get; set; }
}

第一个json字符串将整个事物封装在一个对象中 – 如果我运行它,它运行正常,但myObjects只是一个空列表.如果我运行第二个字符串(没有它被包装)我得到以下错误:

Type ‘System.Collections.Generic.Dictionary`2[[System.String,
mscorlib,Version=4.0.0.0,Culture=neutral,
PublicKeyToken=b77a5c561934e089],[System.String,mscorlib,
Version=4.0.0.0,PublicKeyToken=b77a5c561934e089]]’
is not supported for deserialization of an array.

从我做过的研究看来,这应该是非常直接的 – 任何人都有任何关于我应该使用哪种JSON格式以及出了什么问题的想法?如果我只做一个对象而不是一个对象数组,JSON反序列化就好了.

解决方法

是的,如果您有任何复杂的类型和日期,反序列化器不会特别反序列化该dictornary对象.解决方案是使用Newtonsoft.Json使用Jobject进行反序列化你可以把它作为一个例子并尝试..在你的情况下你可以把它带到var或Jobject
JArray resources=(JArray)JsonConvert.DeserializeObject(objJson);
                     itemStores = resources.Select(resource => new Resource`enter code here`
                     {
                         SpaceUsed = long.Parse(resource["indexDiskMB"].ToString()),ItemId =resource["id"].ToString(),CountItems =Int32.Parse(resource["numItems"].ToString()),ItemType=resource["type"].ToString()

                     }).ToList();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读