我有这样的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
答案 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);
}