我在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.'
答案 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