【问题标题】:C# JSON Deserialization Error ArrayC# JSON 反序列化错误数组
【发布时间】:2017-08-18 01:05:11
【问题描述】:

我是 C# 的新手,我想反序列化 C# 中的 JSON 对象,但出现错误:

我们遇到了一个问题:无法反序列化当前的 JSON 数组(例如 [1,2,3]) 转换为类型 'ZK4000_Example.JsonParser+user' 因为类型 需要一个 JSON 对象(例如 {"name":"value"})来反序列化 正确。要修复此错误,请将 JSON 更改为 JSON 对象 (例如 {"name":"value"}) 或将反序列化类型更改为数组或 实现集合接口的类型(例如 ICollection, IList),例如可以从 JSON 数组反序列化的 List。 JsonArrayAttribute 也可以添加到类型中以强制它 从 JSON 数组反序列化。路径“usuarios”,第 1 行,位置 24。

路径'',第 1 行,位置 1。

我从其他有相同问题的用户那里阅读了另一个解决方案,但我无法修复它。

我的 Json:

{
  "estado": 1,
  "usuarios": [
    {
      "nombre": "as",
      "id_usuario": "34",
      "huella_string": "1"
    },
    {
      "nombre": "ded",
      "id_usuario": "35",
      "huella_string": "1"
    },
    {
      "nombre": "sa",
      "id_usuario": "36",
      "huella_string": "1"
    },
    {
      "nombre": "xz",
      "id_usuario": "12",
      "huella_string": "1"
    },
    {
      "nombre": "asas,
      "id_usuario": "28",
      "huella_string": "1"
    },
    {
      "nombre": "asscass",
      "id_usuario": "7",
      "huella_string": "mspZVoOalsE9QQsrwkQBBSS/PoEMo8BCAQmiLS/BC5YuKYEVicJIQQkTQlFBCxDES4EPFbE+wQI0UkqBDYW5KYEIKEs6QQmaTzYBEZEjGQEV7qxYAQaczhfBDeQaTEEGH8M0AQelrk0BDCVMK4EOlk8owRGHLTwBBqM8EUEd3CgQwQ/dCUSBAxrEJsEJpcgcATU3NT4BBK5ECgEEzpcJwQXloBIBD2UOIkELfJM4AQmKyFcBDI8QV8EDlU9ZAQ2GKl6BBhlWxJAFXdCyBwANWFxldQwbJCgpJiMjIiMADVZZZXYPICgsLCgkIiIjAAxcX2Z2DBghJSYlIyIiAA1WWWZ0FCMqLS0nIyMiJAAMYWNpdQkTHCEjIiAgHwANVltmAholKi0sJiMiIiUADGhpb3cHEBkdICAdHBwADFZcag0hKCssKSUhISEADGlscXcHDxYbHR0bGxoADFRYYBkkKiopJSIdHB0ADGtucncGDhUaHBsaGhsADVRXTCsoKigmIyAcGh0pAAxsb3MBCA8WGhsbGhscAAxUVU42KCYlIyEdGhccAAtwcnUCCRAWGhsaGhsADFdWUz0kIiIhIBwaFx0BC3V3BAkRFhkbGxscAAtXV1dfGhobGhoWEgwBCnYBBAkPFRobGxsADGxgXm4KERISEA0LCgsDCQQIDxUZHBwBC3FkbwULDQwLCAYE"
    }
  ],
  "peticion": "seleccion_usuarios"
}

这些是我的课程:

class JsonParser
    {
        public int estado { set; get; }
        public string peticion { set; get; }
        public user usuarios { set; get; }

        public  class user
        {
            public string id_usuario { set; get; }
            public string huella_string { set; get; }
            public string nombre { set; get; }
        }

    }

这就是我如何调用数组的值之一

var Json = JsonConvert.DeserializeObject<JsonParser>(strJSON);
ShowHintInfo(Json.usuarios.id_usuario);

谢谢

【问题讨论】:

    标签: c# json serialization


    【解决方案1】:

    usuarios 是一个数组。使用user[]

    class JsonParser
    {
        public int estado { set; get; }
        public string peticion { set; get; }
        public user[] usuarios { set; get; }
    
        public  class user
        {
            public string id_usuario { set; get; }
            public string huella_string { set; get; }
            public string nombre { set; get; }
        }
    
    }
    

    【讨论】:

      【解决方案2】:

      非常简单。看看

            "nombre": "asas,
      

      您忘记了结束语。使用JSON Validator 确保您的 JSON 有效,然后再检查其他任何内容。

      【讨论】:

      • 打败我哈哈
      • 我被自己打败了很多次,这是一个数字游戏:)
      • 是的,阵列也有问题。刚看到别人已经回答了
      • 这可能是他的JSON有问题但不是错误信息的原因,所以即使他修复了这个问题,他也不会摆脱错误。
      • 谢谢,虽然我发问题的时候打错了,但是因为有实名,所以改了参数。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-18
      • 2021-02-11
      • 1970-01-01
      • 1970-01-01
      • 2021-10-13
      • 2017-10-16
      相关资源
      最近更新 更多