通过C#中的JSON对象通过索引获取值

时间:2018-07-12 09:53:13

标签: c# json

我有这个JSON字符串,它是很长的字符串的一部分:

string UserConfigTemps =
{"prodStatus":{"uservalue":"1","ismodified":"false"},
"experimentation":{"uservalue":"2","ismodified":"true"}}

我将其转换为JSON对象

var  configinterface = JObject.Parse(UserConfigTemps);

现在我的问题在这里,我想像这样获得ismodified的值

foreach(var temps in configinterface )
{
    if(configinterface[temps].ismodified) // do somthing
}  

我不想写configinterface[prodStatus].ismodified,因为它会很长。

2 个答案:

答案 0 :(得分:0)

这是我的选择

string UserConfigTemps =
{"prodStatus":{"uservalue":"1","ismodified":"false"},
"experimentation":{"uservalue":"2","ismodified":"true"}};
var  ConfigInterface = JObject.Parse(UserConfigTemps);
Dictionary<string, Object> jsonObj = JsonConvert.DeserializeObject<Dictionary<string, Object>>(UserConfigTemps);
foreach (var item in jsonObj)
{  
if(configinterface[item.Key]["ismodified"].ToString()=="true");
}

答案 1 :(得分:0)

最简单的方法是遍历结果JObject

string jsonString = "your json string";
JObject o = JObject.Parse(jsonString);
foreach (var p in o) {
    if (p.Value.Value<bool>("ismodified")) {
        //do something
    }
}

有关详细信息,请参见Json.NET的文档

编辑

也许您仍然应该定义一个自定义类

class Config {
    public string uservalue {get;set;}
    public bool ismodified {get;set}
}

var c = JsonConvert.DeserializeObject<Dictionary<string, Config>>(jsonString);
foreach (var x in c) {
    if (x.Value.ismodified) {
    }
}