C# 在Newtonsoft C中加载JSON数组时出现读取错误#
我在C#中使用Newtonsoft JSON解析器。JSON的格式似乎正确,但我得到了一个读错误,没有意义。JSON应该反序列化并自动加载到类实例中 类别:C# 在Newtonsoft C中加载JSON数组时出现读取错误#,c#,arrays,json,list,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 = Js
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));
错误:
Newtonsoft.Json.JsonReaderException: 'Unexpected character encountered while parsing value: {. Path 'Features', line 1, position 14.'
至少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; }
}
类程序
{
静态void Main(字符串[]参数)
{
var root=JsonConvert.DeserializeObject(File.ReadAllText(“File.json”));
}
}
公共类根
{
公共列表功能{get;set;}
}
公共类过滤器矩阵
{
公共int ID{get;set;}
public int ParentID{get;set;}
}
谢谢你,吉恩
我基本上是在看到你的帖子时想到这个的。在一个班级里有多个班级,这对我来说从来都不是什么难事。我猜我假设会自动生成一个类数组:-/
JSON脚本:
{"Features":[{"ID":0,"ParentID":0},{"ID":0,"ParentID":0}]}
反序列化:
kernel = JsonConvert.DeserializeObject<FilterMatrix>(File.ReadAllText(fileName));
这个错误消息看起来有点奇怪,但是JSON看起来不像是代表FilterMatrix对象。我刚刚意识到我的类需要一个Features属性。它应该是集合类型吗?名单?
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