[英]Reading JSON string in C#
我有 JSON 文件格式的数据,如
{
"default":{
"name":"username",
"school":"school_name"
},
"type1":{
"name":"studentname",
"school":"schoolName"
},
"type2":{
"name":"user_name",
"school":"schooltitle"
}
}
我正在使用读取数据
Dictionary<string,string> values = JsonConvert.DeserializeObject< Dictionary<string,string> >( json )
其中 json 是来自 json 文件的文本。 我想访问特定的代码块,例如如果 student 是类型 1,则检查该类型是否存在并访问该块,否则访问默认块。 怎么做? 我想要内部块值作为键值对
如果我们修复了缺少的 Json ,
您应该能够将其Deserialize
Dictionary<string, Dictionary<string, string>>
:
var innerData = new Dictionary<string, string>{
{"name", "username"},
{"school", "school_name"}
};
var data = new Dictionary<string, Dictionary<string, string>>{
{"default", innerData},
{"type1", innerData},
{"type2", innerData},
};
string inputJson = JsonConvert.SerializeObject(data);
请注意,生成的 Json 与您的匹配:
{
"default":{"name":"username", "school":"school_name"}
, "type1":{"name":"username", "school":"school_name"}
, "type2":{"name":"username", "school":"school_name"}
}
和去盐化:
var result = JsonConvert.DeserializeObject< Dictionary<string, Dictionary<string, string>> >(inputJson);
var type1Element = result["type1"];
foreach(var keyValue in type1Element){
Console.WriteLine("{keyValue.Key} => {keyValue.Value}");
}
在线演示。
我希望下面的代码会起作用。 (虽然我没有测试过)
JObject jsonObject = (JObject)JsonConvert.DeserializeObject(your_json);
string selectedBlock;
string to_check = "type1"; // I have hardcoded this for example
try
{
if((string)jsonObject.SelectToken(to_check)!=null)
selectedBlock = (string)jsonObject.SelectToken(to_check);
else
selectedBlock = (string)jsonObject.SelectToken("default");
}
catch (Exception e)
{
throw e;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.