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

C# 将此json字符串解析为字符串数组c,c#,arrays,json,parsing,C#,Arrays,Json,Parsing,感觉对于我想做的事情有一个一行两行的解决方案: 解析如下所示的字符串: "{\"postalcode\":\"12345\",\"postalcity\":\"SOME-CITY\",\"country\":\"UK\",\"box\":false}" string[] result = { "12345", "SOME-CITY", "UK", "false" }; 变成这样: "{\"postalcode\":\"12345\",\"postalcity\":\"SOME-C

感觉对于我想做的事情有一个一行两行的解决方案: 解析如下所示的字符串:

 "{\"postalcode\":\"12345\",\"postalcity\":\"SOME-CITY\",\"country\":\"UK\",\"box\":false}"
    string[] result = { "12345", "SOME-CITY", "UK", "false" };
变成这样:

 "{\"postalcode\":\"12345\",\"postalcity\":\"SOME-CITY\",\"country\":\"UK\",\"box\":false}"
    string[] result = { "12345", "SOME-CITY", "UK", "false" };
最简单的方法是什么?

您可以使用它将json序列化为动态对象,从而允许您通过名称访问属性,例如

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

您也可以使用newtonsoft:

字符串json=@{ 名称:苹果, 有效期:新日期1230422400000, 价格:3.99,, 尺寸:[ 小的 中等的 大的 ] }; JObject o=JObject.Parsejson; string name=stringo[name]; //苹果 JArray尺寸=JArrayo[尺寸]; 字符串最小值=字符串大小[0]; //小的 我找到了另一个相关的帖子:
Lib:

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

List<string> values = new List<string>();
List<string> keys= new List<string>();

string pattern = @"\""(?<key>[^\""]+)\""\:\""?(?<value>[^\"",}]+)\""?\,?";
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();

正则表达式中的命名组由?模式表示。在上面的模式中,我们有两个命名组:key和value,它们可以使用groups索引器从匹配对象中抓取。

Hi。。当我尝试反序列化包含多个对象的json字符串时,此方法引发异常。有办法解决这个问题吗?请忽略我上面的评论,JavaScriptSerializer.DeserializeObject方法似乎工作正常。太棒了:又快又整洁:“+1”来自我。