C# 在JSON序列化中将队列属性转换为列表
我正在使用JSON.Net库进行一些反序列化。但是我正在使用的JSON.Net版本认为它已经过修改,可以与Unity3D一起使用——在不能序列化队列,但可以毫无问题地序列化列表的手机上 因此,以下类正确序列化字符串将包含列表项:C# 在JSON序列化中将队列属性转换为列表,c#,json,serialization,unity3d,json.net,C#,Json,Serialization,Unity3d,Json.net,我正在使用JSON.Net库进行一些反序列化。但是我正在使用的JSON.Net版本认为它已经过修改,可以与Unity3D一起使用——在不能序列化队列,但可以毫无问题地序列化列表的手机上 因此,以下类正确序列化字符串将包含列表项: public class SomeClassList { List<SomeOtherClass> m_Stuff = new List<SomeOtherClass>(); public List<SomeOtherClass>
public class SomeClassList
{
List<SomeOtherClass> m_Stuff = new List<SomeOtherClass>();
public List<SomeOtherClass> Stuff
{
get{return m_Stuff;}
}
}
这样做:
JsonConvert.SerializeObject(someClassList)
JsonConvert.SerializeObject(SomeClassQueue)
将返回:{Stuff:[SomeOtherClass,SomeOtherClass,SomeOtherClass]}其中'SomeOtherClass'实际上是SomeOtherClass的字段和数据
这样做:
JsonConvert.SerializeObject(someClassList)
JsonConvert.SerializeObject(SomeClassQueue)
将返回:
{"Stuff":[]}
因为它无法读取队列实体
我想知道如何使用IContractResolver或继承自DefaultContractResolver在序列化时从队列转换为列表,以便正确读取并在反序列化时将其返回队列。发布了一个类似的stackoverflow问题 由于队列实现IEnumerable,您应该能够使用: 反之亦然 否则,您也可以使用
queue.ToList@Daniel A.White:谢谢你的编辑,但是如果不指定使用哪个库,这个问题不是太笼统了吗?你添加的标签就足够了;无需将其添加到标题中。标记在标记字段中更好。它保持了标题的简洁和有趣。好吧,很抱歉!也许你可以告诉我们你迄今为止尝试了什么我想他不想因为序列化程序无法处理而更改代码/表示这是一个非常合理的想法卡斯滕说,我不想因为无法序列化属性而更改我的类。我想用合同解析器来做你建议的事情
List<T> list = new List<T>(queue);
#likewise
Queue queue = new Queue<T>(list);