我该如何解析这样的json字符串

时间:2016-02-02 04:56:17

标签: c# json

我从webclient收到一个json字符串,如下所示:

"{\"1\": \"on\", \"2\": \"on\"}"

现在我应该把它转换成一些结构并获取值,点是值不固定,可能是这样的:

"{\"1\": \"on\", \"2\": \"on\", \"3\": \"off\"}"

或者

"{\"1\": \"on\", \"2\": \"off\", \"3\": \"on\", \"4\": \"on\"}"

所以我的问题是如何解析这样的字符串。我需要获取" on"。

的值

由于

2 个答案:

答案 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);
  }
}