从MVC中的WCF服务反序列化Json时出错

时间:2015-03-13 21:03:44

标签: java c# json wcf serialization

我从MVC5项目调用Rest wcf服务。我尝试序列化Jason将其发送到视图但我收到错误。 这是我的控制器代码,它调用服务并返回Json。

  public class CustomerController : Controller
{

    readonly string customerServiceUri = "http://localhost:63674/CSA.svc/";

    // GET: /Customer/
    public ActionResult Index()
    {
        object customerList = null;
        using (WebClient webclient = new WebClient())
        {
            string jsonStr;
            jsonStr = webclient.DownloadString(customerServiceUri + "GetAllCustomers");

            customerList = JsonConvert.DeserializeObject<List<Customer>>(jsonStr);
        }

        return View(customerList);

    }

jsonStr变量具有以下值:

{ “GetAllCustomersResult”:[{ “ACCOUNT_NUMBER”: “7000019000415”, “Account_Payment_Status”:NULL, “ACCOUNT_STATUS”:NULL, “CREATE_DATE”:NULL, “CUSTOMER_ID”:9000415, “电子邮件”:NULL,“将First_Name “:” IMAD”, “Last4SSN”:空, “LastPayment_Amount”:空, “姓氏”: “卡玛”, “Last_Payment_Date”:空, “MODIFIED_DATE”:空, “Online_Agreement”:假的, “Payment_in”:空, “用户名”:NULL, “isActivated”:假 “isActive”:假 “isLocked”:假 “isRegistered”:假 “unsuccessful_login_count”:0},

但我在消毒线上遇到错误,这就是错误:

无法将当前JSON对象(例如{“name”:“value”})反序列化为类型'System.Collections.Generic.List`1 [CSAMVCCALLService.Models.Customer]',因为该类型需要JSON数组(例如[1,2,3])正确反序列化。 要修复此错误,请将JSON更改为JSON数组(例如[1,2,3])或更改反序列化类型,使其成为普通的.NET类型(例如,不是像整数这样的基本类型,而不是类似的集合类型可以从JSON对象反序列化的数组或List。 JsonObjectAttribute也可以添加到类型中以强制它从JSON对象反序列化。 Path'GetAllCustomersResult',第1行,第25位。

1 个答案:

答案 0 :(得分:1)

您的json不是数组或列表。它是一个单一的对象。所以你的代码应该是这样的

var result = JsonConvert.DeserializeObject<Result>(jsonStr);

public class Customer
{
    public string Account_Number { get; set; }
    public object Account_Payment_Status { get; set; }
    public object Account_Status { get; set; }
    public object Create_Date { get; set; }
    public int Customer_ID { get; set; }
    public object Email { get; set; }
    public string First_Name { get; set; }
    public object Last4SSN { get; set; }
    public object LastPayment_Amount { get; set; }
    public string Last_Name { get; set; }
    public object Last_Payment_Date { get; set; }
    public object Modified_Date { get; set; }
    public bool Online_Agreement { get; set; }
    public object Payment_in { get; set; }
    public object Username { get; set; }
    public bool isActivated { get; set; }
    public bool isActive { get; set; }
    public bool isLocked { get; set; }
    public bool isRegistered { get; set; }
    public int unsuccessful_login_count { get; set; }
}

public class Result
{
    public List<Customer> GetAllCustomersResult { get; set; }
}

BTW:我使用http://json2csharp.com/从你的json创建c#类。