将此json字符串解析为字符串数组c#

感觉就像我想要做的那样有一个两行的解决方案:解析这样的字符串:

"{\"postalcode\":\"12345\",\"postalcity\":\"SOME-CITY\",\"country\":\"UK\",\"box\":false}" 

进入这样的事情:

  string[] result = { "12345", "SOME-CITY", "UK", "false" }; 

这是最简单的方法吗?

 string json = "{\"postalcode\":\"12345\",\"postalcity\":\"SOME-CITY\",\"country\":\"UK\",\"box\":false}"; var dict = new JavaScriptSerializer().Deserialize>(json); var postalCode = dict["postalcode"]; //Array is also possible string[] result = dict.Select(kv => kv.Value.ToString()).ToArray(); 

你也可以使用newtonsoft: http ://james.newtonking.com/pages/json-net.aspx

 string json = @"{ ""Name"": ""Apple"", ""Expiry"": new Date(1230422400000), ""Price"": 3.99, ""Sizes"": [ ""Small"", ""Medium"", ""Large"" ] }"; JObject o = JObject.Parse(json); string name = (string)o["Name"]; // Apple JArray sizes = (JArray)o["Sizes"]; string smallest = (string)sizes[0]; // Small 

我找到了另一个相关的post: JSON到C#中的字符串数组
Lib: http : //msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx

您可以使用JavaScriptSerializer将json序列化为dynamic对象,这将允许您通过名称访问属性,例如

 var address = new JavaScriptSerializer().Deserialize(json); Console.WriteLine(address["postalcode"]); 

看起来您的输入字符串是JSON字符串,如果需要,可以使用JSON反序列化器。 如果不是,您可以使用正则表达式和命名组,如下所示:

 List values = new List(); List keys= new List(); string pattern = @"\""(?[^\""]+)\""\:\""?(?[^\"",}]+)\""?\,?"; foreach(Match m in Regex.Matches(input, pattern)) { if (m.Success) { values.Add(m.Groups["value"].Value); keys.Add(m.Groups["key"].Value); } } var result = values.ToArray(); 

正则表达式中的命名组由(?pattern) 。 在上面的模式中,我们有两个命名组: keyvalue ,可以使用Groups索引器从Match对象中获取。