C# 如何从JSON字符串中提取这些值
我有这个JSON字符串,但不确定如何解析其中的值:C# 如何从JSON字符串中提取这些值,c#,json,deserialization,C#,Json,Deserialization,我有这个JSON字符串,但不确定如何解析其中的值: 有 has2 我确实成功地正确解析出了“id”,但不确定如何访问: CORS CORS2 CORS3 CORS4 我得到错误: '无法将当前JSON对象(例如{“name”:“value”})反序列化为类型“System.String[]”,因为该类型需要JSON数组(例如[1,2,3]) 我已将JSON粘贴到pastebin中: 我的守则如下: public void getInfo() { String JSONstring =
有
has2
我确实成功地正确解析出了“id”,但不确定如何访问:
CORS
CORS2
CORS3
CORS4
我得到错误:
'无法将当前JSON对象(例如{“name”:“value”})反序列化为类型“System.String[]”,因为该类型需要JSON数组(例如[1,2,3]) 我已将JSON粘贴到pastebin中: 我的守则如下:
public void getInfo()
{
String JSONstring = "{ id: 'hello', name: 'Hello',has:{ CORS: false,CORS2: true},has2:{ CORS3: false,CORS4: true}}";
String id = ""; List<String> has = new List<String>(); List<String> has2 = new List<String>();
var deserializedTicker = JsonConvert.DeserializeObject<JsonInfo>(JSONstring);
id = deserializedTicker.id;
has = deserializedTicker.has.ToList();
has2 = deserializedTicker.has.ToList();
}
public class JsonInfo
{
public String id { get; set; }
public String[] has { get; set; }
public String[] has2 { get; set; }
}
您的json不正确,密钥
包含一个dict no列表
您需要将反序列化更改为字典或更改json
这里您可以看到一个示例:
在JSON中,has
是一个对象,而不是数组。您应该对类进行建模,以支持包含属性CORS
、CORS2
等的对象
编辑:如果您想坚持使用has
作为一个数组,您应该更改JSON以匹配数组所期望的内容,这可能类似于:has:[false,true]
,并忽略CORS内容。首先,让我们更正JSON:
{
"id": "hello",
"name": "Hello",
"has": {
"CORS": false,
"CORS2": true
},
"has2": {
"CORS3": false,
"CORS4": true
}
}
现在,您遇到的问题是,您正试图将“has”
和“has2”
中的值反序列化为数组。在JSON中,它们不是数组;它们是物体。因此,您需要定义具有相同属性的新类,以便正确地反序列化JSON:
public class JsonInfo
{
public string id { get; set; }
public string name { get; set; }
public JsonHasInfo has { get; set; }
public JsonHas2Info has2 { get; set; }
}
public class JsonHasInfo
{
public bool CORS { get; set; }
public bool CORS2 { get; set; }
}
public class JsonHas2Info
{
public bool CORS3 { get; set; }
public bool CORS4 { get; set; }
}
现在,您应该能够正确地反序列化(正确的)JSON:
String JSONstring = "{ \"id\": \"hello\", \"name\": \"Hello\", \"has\": { \"CORS\": false, \"CORS2\": true }, \"has2\": { \"CORS3\": false, \"CORS4\": true } }\";"
var deserializedTicker = JsonConvert.DeserializeObject<JsonInfo>(JSONstring);
String JSONstring=“{\'id\':\'hello\',\'name\':\'hello\',\'has\':{\'CORS\':false,\'CORS2\':true},\'has2\':{\'CORS3\':false,\'CORS4\':true}”;"
var deserializedTicker=JsonConvert.DeserializeObject(JSONstring);
您的代码片段和pastebin链接中的JSON字符串都不是有效的JSON。请看我对您的另一个问题的评论:几个小时前的评论。该评论也适用于这里。您在这里有点重复您的错误…has和has2不是设置的字符串或数组,它们是复杂的对象,您需要对它们进行反序列化,或者使用动态或JObjectI重新格式化您的代码块。由于这是C#(而不是javascript),您需要使用带有{}的图标符号来格式化您的代码,而不是将其格式化为javascript的代码。只需将JSON粘贴到您的问题中即可;没有理由让人们访问其他网站。是的,我尝试使用dynamic和object进行一种方法。我确实编辑了我的帖子,添加了这种方法,但也出现了一些错误。现在我明白了。该代码有效。我尝试获得一个挂起所有的场景。所以它不是一个数组,因为我认为它是一个对象。所以我确实遵循你如何设置代码这么好。非常感谢你的帮助!