Json.NET - ' JsonObject(IsReference = true)'不工作

时间:2014-09-29 12:21:26

标签: json.net

我正在使用Json.NET序列化对象图,我在这个大型层次结构中的一些类上使用JsonObject(IsReference = true)。到目前为止,这个属性已经做了我所期望的 - 用$ref值替换序列化JSON中的重复对象实例。

我刚刚在具有相同属性的层次结构中添加了一个新类,但是我没有得到所需的行为,即这个新类的每个实例都在JSON中重复,而不是被{{1}替换}值。

Json.NET如何确定何时应用此引用?我所知道的唯一要求是该类具有无参数ctr(它可以)。新类与其他类组装在一个单独的组件中,但这不会产生任何影响吗?

修改

我不想混淆水域,但我被要求提供示例代码。但是序列化发生在NoSQL数据库中,对象图持久化(RavenDB,内部使用Json.NET)。相反,我已经包含了类/对象图的摘录,显示了一些相关的属性(为我糟糕的UML道歉): -

enter image description here

标有*的类具有$ref属性。您可以看到各种关系(例如[JsonObject(IsReference = true)]Sample.ParentSample.BaselineSample),这些关系在Json.NET序列化时会被Concentration.Method值替换。

一个不起作用的是新的$ref类(我没有展示它的一些属性,因为它们只是值类型)。序列化后,ScriptSample.Script属性都包含同一对象的“完整”JSON表示;我希望将Batch.Scripts替换为Sample.Script值。 ($refBatch.Methods属性具有相同的关系,后一个属性 被替换。)

0 个答案:

没有答案