C# 从json文件c中检索项
我想从json文件中检索最新版本1.1.0。然而,它总是给我错误的不能反序列化json对象到类型RootObject 这是我的班级C# 从json文件c中检索项,c#,json,C#,Json,我想从json文件中检索最新版本1.1.0。然而,它总是给我错误的不能反序列化json对象到类型RootObject 这是我的班级 { "_id": "underscore", "_rev": "136-824a0ef7436f808755f0712c3acc825f", "name": "underscore", "description": "JavaScript's functional programming helper library.", "
{
"_id": "underscore",
"_rev": "136-824a0ef7436f808755f0712c3acc825f",
"name": "underscore",
"description": "JavaScript's functional programming helper library.",
"dist-tags": {},
"versions": {
"1.0.3": {
"name": "xxx",
"description": "xxx"
},
"1.0.4": {},
"1.1.0": {}
}
}
这就是我使用它的地方
public class versions
{
public string name { get; set; }
public string description { get; set; }
}
public class RootObject
{
public List<versions> vs { get; set; }
}
任何想法。多谢
更新:
我已经更新了JSON文件格式,但存在一些问题。我认为问题在于,在JSON中,必须引用所有字段/属性名称。这与标准Javascript表示法不同,后者可以有不带引号的属性 因此,您的文件应该如下所示:
RootObject[] dataset = JsonConvert.DeserializeObject<RootObject[]>(json);
请注意,{1.0.3:{name:xxx}}也不是有效的JavaScript,因为“1.0.3”在JavaScript中是无效标识符。我认为问题在于,在JSON中,必须引用所有字段/属性名称。这与标准Javascript表示法不同,后者可以有不带引号的属性 因此,您的文件应该如下所示:
RootObject[] dataset = JsonConvert.DeserializeObject<RootObject[]>(json);
请注意,{1.0.3:{name:xxx}}也不是有效的JavaScript,因为“1.0.3”在JavaScript中是无效的标识符。我已经修复了您的json问题。现在是你真正的问题 我想从json文件中检索最新版本1.1.0。然而,它总是给我错误的不能反序列化json对象到类型RootObject 您有像1.0.3这样的属性名,这些名称在编译时是未知的。因此,不能将它们反序列化为具体的类。你应该动态地处理它们 试试这个:
{
"_id" : "underscore",
"versions": {
"1.0.3" : {
"name": "xxx",
"description": "xxx"
}
}
我已经修复了您的json问题。现在是你真正的问题 我想从json文件中检索最新版本1.1.0。然而,它总是给我错误的不能反序列化json对象到类型RootObject 您有像1.0.3这样的属性名,这些名称在编译时是未知的。因此,不能将它们反序列化为具体的类。你应该动态地处理它们 试试这个:
{
"_id" : "underscore",
"versions": {
"1.0.3" : {
"name": "xxx",
"description": "xxx"
}
}
查看更新答案中的JSON:
var versions = JObject.Parse(json)["versions"]
.Children()
.Cast<JProperty>()
.ToDictionary(c => c.Name, c => c.Value.ToObject<versions>());
这仍然是无效的JSON-您有4个开始{和3个结束}
您应该使用-来验证您的JSON并确保其有效查看更新答案中的JSON:
var versions = JObject.Parse(json)["versions"]
.Children()
.Cast<JProperty>()
.ToDictionary(c => c.Name, c => c.Value.ToObject<versions>());
这仍然是无效的JSON-您有4个开始{和3个结束}
您应该使用-来验证JSON并确保其有效Erorrs:无法从用法推断。。我认为字典和对象是错误的assume@user1851359我在发布前测试了它。没有错误。您是否包含System.Linq?Erorrs:无法从用法推断。。我认为字典和对象是错误的assume@user1851359我在发布前测试了它。没有错误。您是否包括System.Linq?更新后有哪些问题?更新后有哪些问题?