在Newtonsoft C#中加载JSON数组时读取错误

时间:2018-05-15 05:38:14

标签: c# arrays json list

我在C#中使用Newtonsoft JSON解析器。 JSON似乎格式正确,但我收到一个没有意义的读取错误。 JSON应该反序列化并自动加载到类实例中。

类别:

class FilterMatrix {
    public int ID { get; set; }
    public int ParentID { get; set; }
}

反序列化代码:

string fileName = @"C:\Users\accounts.json";
FilterMatrix kernel = JsonConvert.DeserializeObject<FilterMatrix>(File.ReadAllText(fileName));

JSON文件内容:

{"Features":[{"ID":0,"ParentID":0},{"ID":0,"ParentID":0}]}

错误:

Newtonsoft.Json.JsonReaderException: 'Unexpected character encountered while parsing value: {. Path 'Features', line 1, position 14.'

2 个答案:

答案 0 :(得分:3)

好吧,至少JSON的结构需要匹配您的类层次结构。工作示例:

class Program
{

    static void Main(string[] args)
    {
        var root = JsonConvert.DeserializeObject<Root>(File.ReadAllText("file.json"));
    }

}

public class Root
{
    public List<FilterMatrix> Features { get; set; }
}

public class FilterMatrix
{
    public int ID { get; set; }
    public int ParentID { get; set; }
}

答案 1 :(得分:0)

谢谢,Gene。

当我看到你的帖子时,我基本上想出了这个。它从来没有让我在课堂上有多个班级。我想我假设会自动创建一个类数组: - /

JSON脚本:

{"Features":[{"ID":0,"ParentID":0},{"ID":0,"ParentID":0}]}

反序列化:

kernel = JsonConvert.DeserializeObject<FilterMatrix>(File.ReadAllText(fileName));

我的课程:

class FilterMatrix {
    private List<Feature> features = new List<Feature>();  
    public List<Feature> FeaturesList
    {
        get { return features; }
        set { features = value; }
    }
}

class Feature {
    public int ID { get; set; }
    public int ParentID { get; set; }
}

我按索引访问元素:

kernel.FeaturesList[0].ID