我正在嘗試編寫一個包含newtonsoft JSON.net組件的Web API。沒有服務參考的項目。錯誤:輸入'Newtonsoft.Json.Linq.JToken'是不支持的遞歸收集數據合同。
我的代碼是相當直接:
public object GetJsonFile(int id = 1) {
using (StreamReader r = new StreamReader(myJsonFile)) {
string json;
// todo: build logic to only grab latest when an id is supplied
json = r.ReadToEnd();
object jsonObject = JsonConvert.DeserializeObject(json);
return jsonObject;
}
當測試頁面,我得到了可怕的「類型‘Newtonsoft.Json.Linq.JToken’是不支持遞歸收集數據的合同。考慮修改集合'Newtonsoft.Json.Linq.JToken'的定義以刪除對自身的引用。「錯誤。
我已經完成了我的挖掘份額,並且每個人似乎都建議取消選中「在所有引用的程序集中重用類型」,但似乎只用於服務引用的情況下,而我的項目沒有使用。我確實找到了做這件事的地方,但看到我沒有參考服務,我無法配置它。
我不是在家裏在Visual Studio中,所以請去容易在我身上;)
哪一行引發此異常?這一個'JsonConvert.DeserializeObject'?或者,客戶端調用中的錯誤?我認爲Json.NET的DeserializeObject也可以反序列化嵌套對象。只有默認的DataContractSerializer出現了這個問題。 –
嗨@MichaelSync。它甚至沒有輸入代碼(我設置了斷點),所以我沒有行號顯示。它開始編譯,然後拋出異常。 – SchmitzIT
我們必須確保您確實向我們展示了存在問題的代碼。你是從Visual Studio運行你的WCF項目嗎?或者,你是否從VS一起運行客戶端和WCF項目?我建議你從VS運行你的WCF項目,並把該斷點放在函數的第一行,讓我知道它是否輸入代碼。如果它沒有打到代碼的第一行,那麼你得到的異常來自不同的方法。 –