在 C# 中将 JsonResult 转换为不同的对象

JLB*_*JLB 5 c# json object jsonresult

所以我有一个名为的对象Balance,其中包含:

public class Balance
{
   string balance1;
   string balance2;
   string currency;
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试将JsonResult不同函数调用返回的对象解析为Balance.

我试过使用JsonConvert.Serializeand Deseralize<Balance>,但是,我尝试解析的对象每次都设置为 null (即balance1 = null等)

任何帮助将非常感激。

编辑:

下面是我试图解析的代码。此外,我意识到数据访问JsonResult在一个名为的值中Data并显示为Data: { balance1: "800" balance2: "800" currency: "CAD"}.

JsonResult result = admin.GetCompanyBalance(test.CustomerID, test.DevelopmentID); 
string json = JsonConvert.SerializeObject(result);
Balance br = new Balance();
br = JsonConvert.DeserializeObject<Balance>(json);
Run Code Online (Sandbox Code Playgroud)

Mat*_*and 5

鉴于您的 JSON:

Data: { balance1: "800" balance2: "800" currency: "CAD"}
Run Code Online (Sandbox Code Playgroud)

您想要的对象似乎嵌套在Data父对象的属性中。你可以这样做:

JObject o = JObject.parse(json);
Balance br = o["Data"].ToObject<Balance>();
Run Code Online (Sandbox Code Playgroud)


Edg*_*dez 5

JsonResult.DataBalance您要查找的对象。

    JsonResult result = admin.GetCompanyBalance(test.CustomerID, test.DevelopmentID);

    var balance = result.Data as Balance;
Run Code Online (Sandbox Code Playgroud)

或者如果你想测试序列化和反序列化你可以做

    var json = JsonConvert.SerializeObject(result.Data);   

    var br = JsonConvert.DeserializeObject<Balance>(json);
Run Code Online (Sandbox Code Playgroud)

http://www.heartysoft.com/ashic/blog/2010/5/ASPNET-MVC-Unit-Testing-JsonResult-Returning-Anonymous-Types