C# 从json文件生成动态字典
我有这样的json文件:C# 从json文件生成动态字典,c#,json,linq,dictionary,C#,Json,Linq,Dictionary,我有这样的json文件: { "fields": { "customfield_10008": { "value": "c1" }, "customfield_10009": { "value": "c2" } ... } } 我想用c语言创建字典,比如: 我怎样才能做到这一点?我以这种方式加载json dynamic json = Js
{
"fields": {
"customfield_10008": {
"value": "c1"
},
"customfield_10009": {
"value": "c2"
}
...
}
}
我想用c语言创建字典,比如:
我怎样才能做到这一点?我以这种方式加载json
dynamic json = JsonConvert.DeserializeObject(File.ReadAllText("data.json");
不知道如何创建上面的dict通过这些值来收集它们:
var result = new Dictionary<string, string>();
foreach (var field in obj.fields)
{
result.Add(field.Name, Convert.ToString(field.Value.value));
}
var result=newdictionary();
foreach(对象字段中的变量字段)
{
Add(field.Name,Convert.ToString(field.Value.Value));
}
如果您的json在编译时没有类型,那么您可以在编译时使用dynamic
type
我将使用dynamic
类型解析上述json,并使用解析后的值生成dictionary
:
var dicValues = new Dictionary<string,string>(); // this dictionary contains key value pair result
dynamic res = JsonConvert.DeserializeObject<dynamic>(File.ReadAllText("data.json");
dynamic availableFields = res["fields"];
if (availableFields != null)
{
foreach (var field in availableFields)
dicValues.Add(field.Name, field.Value["value"].Value);
}
var dicValues=new Dictionary();//此字典包含键值对结果
dynamic res=JsonConvert.DeserializeObject(File.ReadAllText(“data.json”);
动态可用字段=res[“字段”];
如果(可用字段!=null)
{
foreach(可用字段中的var字段)
dicValues.Add(field.Name,field.Value[“Value”].Value);
}
一点linq技巧可以帮助你
var dict = JObject.Parse(File.ReadAllText("data.json"))["fields"]
.Cast<JProperty>()
.ToDictionary(x => x.Name, x => (string)x.Value["value"]);
var dict=JObject.Parse(File.ReadAllText(“data.json”))[“fields”]
.Cast()
.ToDictionary(x=>x.Name,x=>(string)x.Value[“Value”]);
var dict = JObject.Parse(File.ReadAllText("data.json"))["fields"]
.Cast<JProperty>()
.ToDictionary(x => x.Name, x => (string)x.Value["value"]);