C# 使用JSON.NET通过字符串从JSON获取密钥
我需要能够使用JSON.NET从JSON获取数据C# 使用JSON.NET通过字符串从JSON获取密钥,c#,json,.net,C#,Json,.net,我需要能够使用JSON.NET从JSON获取数据 { "labels": { "start" : { "action" : "ASK", "message" : "What do you want to do, {name}?", "responses" : { "kill"
{
"labels": {
"start" : {
"action" : "ASK",
"message" : "What do you want to do, {name}?",
"responses" : {
"kill" : "GOTO label3"
}
},
"label3" : {
"action" : "END",
"message" : "Thanks for playing."
}
}
}
这是我的C代码:dynamicJSON=JsonConvert.DeserializeObject(sourcejson)代码>
这将JSON放入一个对象中,我可以像这样或类似方式访问该对象:
Console.WriteLine(json.labels.start.responses.kill)代码>
但是,我需要指定基于字符串检索哪个键,例如,基于包含“kill”内容的C#字符串检索“kill”。如果在responses中有另一个响应,我可以将C#字符串更改为指定键的名称,然后它将检索它。我怎样才能做到这一点呢?如果你想继续使用动态
对象,你可以用json.labels.start.responses[“kill”]
替换你的print语句,如下所示
[Test]
public void Test()
{
var sourcejson = @"{
""labels"": {
""start"" : {
""action"" : ""ASK"",
""message"" : ""What do you want to do, {name}?"",
""responses"" : {
""kill"" : ""GOTO label3""
}
},
""label3"" : {
""action"" : ""END"",
""message"" : ""Thanks for playing.""
}
}
}";
dynamic json = JsonConvert.DeserializeObject(sourcejson);
Console.WriteLine(json.labels.start.responses["kill"]);
}
您的序列化对象将有一个包含所有属性的字典
,您可以通过它们的键访问这些值。我的首选是反序列化到作业对象
例如:JsonConvert.DeserializeObject(sourceJson)代码>
然后,您可以使用标准C#索引器引用这些键
var jObj=JsonConvert.derserialized对象(sourceJson);
var kill=jObj[“labels”][“start”][“responses”][“kill”]?.ToString();
但是,请确保在不同的位置进行了相应的空检查,因为它不是“类型安全”代码