从json文件制作动态字典

时间:2017-09-17 19:35:57

标签: c# json linq dictionary

我有这样的json文件:

{
    "fields": {
        "customfield_10008": {
              "value": "c1"
        },
        "customfield_10009": {
              "value": "c2"
       }
            ...
    }
}

我想在c#中创建字典,如:

key:    value
"customfield_10008":"c1"
"customfield_10009":"c2"

我怎么能做到这一点?我以这种方式加载json,

dynamic json = JsonConvert.DeserializeObject(File.ReadAllText("data.json");

并且不知道如何创建像上面这样的dict

3 个答案:

答案 0 :(得分:2)

一点点linq技巧可以帮助你

<Preference
    android:key="my_key"
    android:title="@string/originalTitle">
    <intent android:action="android.intent.action.VIEW"
        android:data="https://originallink" />
</Preference>

Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
intent.setData(Uri.parse("https://newlink"));
getPreferenceScreen().findPreference("my_key").setIntent(intent);
getPreferenceScreen().findPreference("my_key").setTitle(getString(R.string.newTitle));

答案 1 :(得分:1)

通过价值并收集它们:

var result = new Dictionary<string, string>();
foreach (var field in obj.fields)
{
    result.Add(field.Name, Convert.ToString(field.Value.value));
}

答案 2 :(得分:0)

如果你的json在编译时没有类型,那么你可以在那时使用dynamic类型。

我会使用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);
}