java - 在 MVC 中从 WCF 服务反序列化 Json 时出错

标签 java c# json wcf serialization

我从 MVC5 项目调用 Rest wcf 服务。我尝试序列化 Jason 以将其发送以查看,但出现错误。 这是我的 Controller 代码,它调用服务并返回 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,"Email":null,"First_Name ":"IMAD","Last4SSN":null,"LastPayment_Amount":null,"Last_Name":"KAMAR","Last_Payment_Date":null,"Modified_Date":null,"Online_Agreement":false,"Payment_in":null, "用户名":null,"isActivated":false,"isActive":false,"isLocked":false,"isRegistered":false,"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 对象反序列化。还可以将 JsonObjectAttribute 添加到类型中以强制其从 JSON 对象反序列化。 路径“GetAllCustomersResult”,第 1 行,位置 25。

最佳答案

您的 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; }
}

顺便说一句:我用了http://json2csharp.com/从 json 创建 C# 类。

关于java - 在 MVC 中从 WCF 服务反序列化 Json 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29041899/

相关文章:

json - 尝试使用 Dataframe.to_json 方法时出错

c# - 为什么不能在 C# 方法中声明静态变量?

c# - 从 HTTPRuntime 缓存中检索图像

java - 对象映射器 : Do not escape

java - 从 org.w3c.dom.Node 获取 Xpath

java - Java 6 之后 Graphics2D drawString 产生无意义字符

java - 从eclipse外部保存的文件会自动编译吗?

java - JPQL 连接( hibernate )

c# - 如何在C#中获取设备的时钟系统? (12小时或24小时)

Javascript 获取数组字段名称