转换Queue< T>属性列表
本文关键字:列表 JSON 属性 序列化 Queue 转换 | 更新日期: 2023-09-27 18:18:06
我使用JSON。Net(这里)库执行一些(反/)序列化。但是JSON的版本。我使用的Net(认为它被修改为与Unity3D一起工作-在手机上)不能序列化Queue,但可以毫无问题地序列化List。
所以下面的类序列化正确(字符串将包含列表项):
public class SomeClassList
{
List<SomeOtherClass> m_Stuff = new List<SomeOtherClass>();
public List<SomeOtherClass> Stuff
{
get{return m_Stuff;}
}
}
public class SomeClassQueue
{
Queue<SomeOtherClass> m_Stuff = new Queue<SomeOtherClass>();
public Queue<SomeOtherClass> Stuff
{
get{return m_Stuff;}
}
}
的例子:
.
.
.
SomeClassList someClassList = new SomeClassList()
SomeClassQueue someClassQueue = new SomeClassQueue()
这样做:
JsonConvert.SerializeObject(someClassList)
将返回:{"Stuff":[SomeOtherClass, SomeOtherClass, SomeOtherClass]}(其中'SomeOtherClass'实际上是SomeOtherClass的字段和它的数据
这样做:
JsonConvert.SerializeObject(SomeClassQueue)
将返回:
{"Stuff":[]}
因为它无法读取Queues实体。
我想知道我如何使用IContractResolver或从DefaultContractResolver继承从队列转换到序列化上的列表(以便它可以正确读取),并将其转回反序列化上的队列。
这里有一个类似的stackoverflow问题。
由于Queue实现了IEnumerable,你应该能够使用:
List<T> list = new List<T>(queue);
#likewise
Queue queue = new Queue<T>(list);
,反之
否则你也可以使用
queue.ToList()
本文关键字:列表 JSON 属性 序列化 Queue 转换 | 更新日期: 2023-09-27 18:18:06
我使用JSON。Net(这里)库执行一些(反/)序列化。但是JSON的版本。我使用的Net(认为它被修改为与Unity3D一起工作-在手机上)不能序列化Queue,但可以毫无问题地序列化List。
所以下面的类序列化正确(字符串将包含列表项):
public class SomeClassList
{
List<SomeOtherClass> m_Stuff = new List<SomeOtherClass>();
public List<SomeOtherClass> Stuff
{
get{return m_Stuff;}
}
}
public class SomeClassQueue
{
Queue<SomeOtherClass> m_Stuff = new Queue<SomeOtherClass>();
public Queue<SomeOtherClass> Stuff
{
get{return m_Stuff;}
}
}
的例子:
.
.
.
SomeClassList someClassList = new SomeClassList()
SomeClassQueue someClassQueue = new SomeClassQueue()
这样做:
JsonConvert.SerializeObject(someClassList)
将返回:{"Stuff":[SomeOtherClass, SomeOtherClass, SomeOtherClass]}(其中'SomeOtherClass'实际上是SomeOtherClass的字段和它的数据
这样做:
JsonConvert.SerializeObject(SomeClassQueue)
将返回:
{"Stuff":[]}
因为它无法读取Queues实体。
我想知道我如何使用IContractResolver或从DefaultContractResolver继承从队列转换到序列化上的列表(以便它可以正确读取),并将其转回反序列化上的队列。
这里有一个类似的stackoverflow问题。
由于Queue实现了IEnumerable,你应该能够使用:
List<T> list = new List<T>(queue);
#likewise
Queue queue = new Queue<T>(list);
,反之
否则你也可以使用queue.ToList()