我从webclient收到一个json字符串,如下所示:
"{\"1\": \"on\", \"2\": \"on\"}"
现在我应该把它转换成一些结构并获取值,点是值不固定,可能是这样的:
"{\"1\": \"on\", \"2\": \"on\", \"3\": \"off\"}"
或者
"{\"1\": \"on\", \"2\": \"off\", \"3\": \"on\", \"4\": \"on\"}"
所以我的问题是如何解析这样的字符串。我需要获取" on"。
的值由于
答案 0 :(得分:2)
您可以使用NuGet也可以使用的JSON.Net(http://www.newtonsoft.com/json)。
JObject obj = JObject.Parse("{\"1\": \"on\", \"2\": \"on\", \"3\": \"off\"}");
var val = (string)obj.Descendants()
.OfType<JProperty>()
.Where(x => x.Value.ToString() == "on")
.First().Name;
这将为您提供值为“on”的第一个节点
答案 1 :(得分:2)
对此的依赖是:Newtonsoft.Json,Newtonsoft.Json.Linq; http://www.newtonsoft.com/json
您可以使用以下代码查找on的值。
//var test = "{\"1\": \"on\", \"2\": \"on\"}";
//var test = "{\"1\": \"on\", \"2\": \"on\", \"3\": \"off\"}";
var test = "{\"1\": \"on\", \"2\": \"off\", \"3\": \"on\", \"4\": \"on\"}";
JObject obj = JObject.Parse(test);
foreach (var pair in obj)
{
if (obj[pair.Key].ToString() == "on")
{
Console.WriteLine(pair.Key);
}
}