【问题标题】:Not able to deserialize json using Newsoft.Json无法使用 Newtonsoft.Json 反序列化 json
【发布时间】:2020-08-06 14:11:28
【问题描述】:

我有 JSON 字符串,当我尝试反序列化它时出错。

JSON

[
    [
        {
            "fieldNameFK": 5
           
        }
    ],
    [
        {
            "fieldNameFK": 6
            
        }
    ]
]

public class Root
{
    public List<List<Test>> Test{ get; set; }
}

public class Test
{
  
    public int FieldNameFK { get; set; }

}

反序列化代码

var response = JsonConvert.DeserializeObject<Root>(jsonStr);

例外

无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型 'ConsoleApp1.Program+Root' 因为该类型需要 JSON 对象 (例如 {"name":"value"})正确反序列化。修复此错误 将 JSON 更改为 JSON 对象(例如 {"name":"value"})或 将反序列化类型更改为数组或实现 集合接口(例如 ICollection、IList),例如 List 可以 从 JSON 数组反序列化。 JsonArrayAttribute 也可以 添加到类型以强制它从 JSON 数组反序列化。小路 '',第 1 行,位置 1。

我也提到了thisthis 解决方案,但没有帮助。

【问题讨论】:

    标签: c# .net json json.net


    【解决方案1】:

    你的根目录有一个 json 数组,而不是一个 json 对象,所以你需要反序列化为一个集合,而不是对象:

    var response = JsonConvert.DeserializeObject<List<List<Test>>>(jsonStr);
    

    【讨论】:

    • @viveknuna 很乐意提供帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 1970-01-01
    相关资源
    最近更新 更多