c# - 将 json 序列化为对象 C#

标签 c# json

我是 json 新手,我正在尝试将 json 响应转换为对象

json 是

"[{\"fields\":[[\"name\",\"value\",\"values\",\"error\"],[\"username\",\"test\",null,\"\"],[\"password\",\"test\",null,\"\"],[\"accountid\",\"\",null,\"\"],[\"rememberMe\",\"Y\",null,\"\"],[\"language\",\"en-US\",null,\"\"],[\"S\",\"test\",null,null]],\"success\":\"Y\",\"message\":\"User authenticated. Logging in.\"}]"

我写了两个类

  public class fields
    {
      public string name { get; set; }
      public string value { get; set; }
      public string values { get; set; }
      public string error { get; set; }
    }

    public class Demo
    {
        public List<fields> fields { get; set; }
        public string message { get; set; }
        public string success { get; set; }

    }

我制作了这个序列化代码:

JsonSerializer serializer = new JsonSerializer();
    Demo result = JsonConvert.DeserializeObject<Demo>(responseFromServer);

or this

  Demo result = new JavaScriptSerializer().Deserialize<Demo>(responseFromServer);

错误是

Type '_Default+fields' is not supported for deserialization of an array

谢谢

巴罗兹

最佳答案

我尝试了你的代码,但对我来说有点不确定。但我可以向您展示我发现的内容,您可以尝试从这里开始工作:

首先:正如我对您的问题的评论一样,字符串的第一个和最后一个字符是 [ 和 ]。这意味着您的服务器正在向您发送一个数组。为了解决这个问题,我只是将您的反序列化行更改为:

Demo[] result = new JavaScriptSerializer().Deserialize<Demo[]>(responseFromServer);

第二:代码在反序列化到您的 fields 对象时仍然遇到问题,然后我意识到您正在接收一个字符串数组的数组,然后我将 Demo 类中的属性更改为:

public string[][] fields { get; set; }

希望这能有所帮助。

关于c# - 将 json 序列化为对象 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20492406/

相关文章:

c# - 更新绑定(bind)到它的 ObservableCollection 后,DataGrid 不会更新

c# - Entity Framework 7 无法创建迁移,因为存在同名的导航属性

c# - 从 asp.net c# 中的 gridview 选择时检索复选框值并将其存储在数据库中?

javascript - 输入元素错误时访问选择方向

c# - 使用 XML 注释创建的 C# 文档在哪里 (Visual Studio 2010)?

c# - C# 应用程序中 where 子句中的未知列

javascript - 如何格式化路径以便在 Express.JS 中接收通用 JSON 对象?

java - 如何修复此代码?将字符串从方法传递到 MainActivity

javascript - 我如何使用 Javascript 解析 JSON

json - 如何忽略使用 Gson 转换为字符的换行符