Преобразование JsonResult в другой объект в C#

Итак, у меня есть объект с именем Balance, который содержит:

public class Balance
{
   string balance1;
   string balance2;
   string currency;
}

и я пытаюсь разобрать объект JsonResult, который возвращается другим вызовом функции, в экземпляр Balance.

Я пытался использовать JsonConvert.Serialize и Deseralize<Balance>, однако объект, который я пытаюсь разобрать, каждый раз устанавливается равным нулю (т.е. 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);

person JLB    schedule 16.09.2014    source источник
comment
Можете ли вы показать код, который вы использовали для сериализации/десериализации, и строку, с которой вы работаете?   -  person Andrew Whitaker    schedule 16.09.2014
comment
Как выглядит JsonResult? Как выглядит BalanceResult? Вы показали нам только Balance.   -  person Matthew Haugen    schedule 16.09.2014
comment
Как на самом деле выглядит GetCompanyBalance? Действительно ли он сериализует объект Balance? Или что-то другое?   -  person Matt Burland    schedule 16.09.2014


Ответы (2)


Учитывая ваш JSON:

Data: { balance1: "800" balance2: "800" currency: "CAD"}

Нужный вам объект оказывается вложенным в свойство Data родительского объекта. Вы можете сделать что-то вроде:

JObject o = JObject.parse(json);
Balance br = o["Data"].ToObject<Balance>();
person Matt Burland    schedule 16.09.2014

JsonResult.Data — это Balance объект, который вы ищете.

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

    var balance = result.Data as Balance;

Или, если вы хотите протестировать сериализацию и десериализацию, вы можете сделать

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

    var br = JsonConvert.DeserializeObject<Balance>(json);

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

person Edgar Hernandez    schedule 16.09.2014