2017-04-27 115 views
1

像我有它返回JSON結果的方法:如何解析JSON對象

return Json(new { status = "error", message = "The organization cannot be deleted because contains transmitters!" }); 

現在我想用狀態和消息來測試我有這個

var result = Controller.DeleteOrganization(2) as JsonResult; 
Assert.AreEqual("error", result.Data.message); 

我試過越來越錯誤:

object does not contain a definition for message

我怎樣才能解決這個問題?

+1

Data的類型爲'object',不會暴露該屬性。嘗試將Data屬性分配給一個'dynamic'變量,然後嘗試訪問該屬性。如果這不起作用,那麼我給了一個答案[這裏](http://stackoverflow.com/a/38446754/5233410)和[這裏](http://stackoverflow.com/a/38552771/5233410),你可以適應你的問題。 – Nkosi

+0

是的,你是對的。謝謝:) –

回答

1

Dataobject類型的,並且不會被暴露屬性。嘗試將Data屬性分配給dynamic變量,然後嘗試訪問該屬性。

var result = Controller.DeleteOrganization(2) as JsonResult; 
var data = JsonConvert.SerializeObject(result.Data); 
var deserializedData = JsonConvert.DeserializeObject<dynamic>(data); 
Assert.AreEqual("error", deserializedData.status); 

如果不工作,那麼我給了一個答案herehere,你可以適應您的問題。

0
  1. 使用json2csharp.com JSON轉換爲C#
  2. 創建一個類文件把代碼
  3. 添加Newtonsoft.Json庫使用NuGet包管理器
  4. 轉換的JSON項目

    RootObject r = JsonConvert.DeserializeObject(json);

+0

感謝您的回覆但是,我已經嘗試過 JavaScriptSerializer serializer = new JavaScriptSerializer(); var jsonResult = serializer.Deserialize (result.Data.ToString());以及 –

+2

JavascriptSerializer已棄用,請使用NewtonSoft Json以獲得更好的性能和其他原因。 – loneshark99