我想直接從服務層的外部API中捕獲JSON,並將其返回給MVC 4 ApiController,然後通過該ApiController輸出JSON。我基本上是圍繞另一個API服務編寫包裝,因爲其他一些操作必須同時發生(身份驗證等)。問題在於JSON被轉換爲字符串,並在我的C#代碼中作爲字符串傳遞。這只是將轉義字符添加到JSON中。無論如何,我可以在我的C#代碼中傳遞JSON對象嗎?我的實施細節如下。從服務中檢索Json並傳遞給ApiController
在服務層,我正在使用通過以下方法提供JSON的API。
return new WebClient().DownloadString(url);
不幸的是,這返回一個字符串。由於這個API已經向我返回JSON,這是有問題的,因爲很多轉義字符被添加到字符串中。
的JSON應該是這個樣子
[{"Citation":{"Attachments":[{"AttachedPersonIds":null,..."Type":"Record"}]
反而它現在看起來像這樣
"[{\"Citation\":{\"Attachments\":[{\"AttachedPersonIds\":null,...\"Type\":\"Record\"}]"
後,我得到這個字符串我通過幾個方法返回它的ApiController(其設置爲返回JSON)像這樣。
public class HintsController : ApiController
{
public string Get(string treeId, string personId)
{
return _hintService.GetHints(treeId, personId);
}
}
我試圖將字符串轉換爲Literal字符串,並嘗試再次序列化字符串。這樣做只是增加了更多的轉義字符,並沒有解決問題。我認爲問題在於我如何使用初始調用,因爲它將它從JSON轉換爲字符串。但我不知道如何避免這種情況。
在此先感謝您的任何想法。
當你在看這個串?它可能只是調試版本 – scottm
當通過ApiController輸出字符串時,它具有轉義字符。我不認爲調試器會添加不存在的轉義字符。 – Pinski
認爲您需要將其作爲內容設置爲StringContent對象的HttpResponseMessage返回。否則,你會得到一個轉義字符串。 – dez