如果被序列化的对象标有[JsonObject(IsReference = true)]
,它将被序列化为$id
属性,该属性将由序列化对象图中每个不同对象引用的递增整数值组成。
但是如果对象是独立序列化,连接在一起,然后反序列化(又称:chatty GET,chunky POST / PUT),则需要重新键入这些值,否则将在反序列化时抛出错误,结果图将会不完整,因为重复'引用将被忽略。
在大多数情况下,对象已经拥有自己的唯一ID(即:guids)。
我已经通过两种方式解决了这个问题:
[JsonProperty("$id")]
虽然我目前不关心引用计数,但我可能在将来,但我不想在我生成的JSON中使用相同guid值的重复属性。
所以我想知道是否有办法迫使NewtonSoft使用我的对象上的id
属性代替$id
属性? < / p>
[或者,我可以使用[JsonProperty("$id")]
标记对象的ID属性,并更改所有使用JSON的代码以使用$id
属性而不是id
..但是我只是不喜欢这个想法。但是,如果$ref
和$id
是JSON标准(是吗?)并且客户端框架没有优雅地尝试在这个地方使用id
缺少$id
(我应该关心吗?),我唯一的选择基本上是重复属性或强制所有消费代码使用$id
。 ]
如果我不能(或者不应该)更改用于参考跟踪的属性,是否有任何理由强制将Guid强加到$id
属性同样糟糕的形式? (即:如果有合理的标准,它是否规定了数值的数字?)
由于