【发布时间】:2014-10-08 09:05:01
【问题描述】:
我正在使用 JSON.Net (here) 库进行一些(反/)序列化。但是我正在使用的 JSON.Net 版本(认为它已修改为与 Unity3D 一起使用 - 在手机上)无法序列化队列,但可以毫无问题地序列化列表。
所以下面的类可以正确序列化(字符串将包含列表项):
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":[]}
因为它无法读取队列实体。
我想知道如何使用 IContractResolver 或从 DefaultContractResolver 继承以在序列化时从队列转换为列表(以便可以正确读取)并在反序列化时将其转回队列。
【问题讨论】:
-
@Daniel A. White:感谢您的编辑,但是当不指定使用哪个库时,这个问题是不是太“笼统”了?
-
你加的标签就够了;无需在标题中添加。
-
标签在标签字段中更好。它使标题保持简洁和有趣。
-
好的,很抱歉!
-
也许你可以向我们展示你到目前为止所做的尝试
标签: c# json serialization unity3d json.net