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

c# – 反序列化包含Dictionary的对象列表,第1张

概述我已经看到很多例子似乎表明我正在做的事情应该有效,但无论出于何种原因,它都没有.我正在尝试反序列化一组对象,其中一个属性是Dictionary,如下所示: class Program{ static void Main(string[] args) { var json = "{\"Collection\":[{\"ID\":\"1243\",\"Dictiona 我已经看到很多例子似乎表明我正在做的事情应该有效,但无论出于何种原因,它都没有.我正在尝试反序列化一组对象,其中一个属性是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; }}@H_403_3@  

第一个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();@H_403_3@                  总结       

以上是内存溢出为你收集整理的c# – 反序列化包含Dictionary的对象列表全部内容,希望文章能够帮你解决c# – 反序列化包含Dictionary的对象列表所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1251202.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存