C# 从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

我有这样的json文件:

{
    "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"]);