簡體   English   中英

在JSON.NET中將ref設置為子級值

[英]Setting ref to children values in JSON.NET

我有一個與JSON.NET相關的問題。 我有一個項目,該項目本身已經從Entity Framework轉換為JSON值(所有選擇和查詢均已編寫)。

由於循環引用問題,我正在使用JSON.NET。 但是,當我的代碼生成為JSON時,該元素的第一個子代首先獲取$ id值,而父代本身獲取$ ref值。

對我來說這是一個非常棘手的問題,我知道我可以編寫自己的匿名查詢來避免此問題。 但是由於項目的規模,更改所有查詢為時已晚,因為老程序員已經按原樣編寫了項目。

我想知道是否可以在JSON.NET中設置此選項。

讓我以這種方式解釋我的問題:

假設我有一個來自JSON.NET的JSON,例如:

1-Question $id:1
  1-a- Response_Group $id:2
    **1-a-a-Response $id: 3**
**1-Response $ref:3**

如果我想改變這種行為,我想得到這個:

1-Question $id:1
  1-a- Response_Group $id:2
    **1-a-a-Response $ref:3**
**1-Response $id:3**

上分支支配下分支。

有沒有辦法在JSON.NET端實現這一目標? 如果JSON.NET中沒有選項,我是否應該派生JSON.NET項目並以這種方式開始更改邏輯?

如果沒有辦法解決這個問題,那么我將開始編寫匿名查詢。

在Json.Net中沒有選項可以更改其工作方式。 它按其方式工作的原因是因為Json.Net在反序列化JSON時使用了僅轉發讀取器,因此特定的$id必須位於任何相應的$ref值之前。 否則它將無法解析引用。

為了按照建議的方式工作,您可能需要通過JSON兩次傳遞(這可能並不總是可能的,例如,使用網絡流),或者需要生成代理對象來代替未解析的引用(比聽起來)。

如果您認為自己想解決這個問題,沒有人會阻止您分叉該項目,但是我認為最好的選擇是嘗試使用Json.Net已經提供的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM