感觉好像有什么我想要做一两排的解决方案: 解析像这样的字符串:解析此JSON字符串到字符串数组C#
"{\"postalcode\":\"12345\",\"postalcity\":\"SOME-CITY\",\"country\":\"UK\",\"box\":false}"
弄成这个样子:
string[] result = { "12345", "SOME-CITY", "UK", "false" };
最简单的方法是什么?
感觉好像有什么我想要做一两排的解决方案: 解析像这样的字符串:解析此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<Dictionary<string,object>>(json);
var postalCode = dict["postalcode"];
//Array is also possible
string[] result = dict.Select(kv => kv.Value.ToString()).ToArray();
您可以使用JavaScriptSerializer将json序列化为dynamic
对象,该对象允许您通过名称访问属性,例如,
var address = new JavaScriptSerializer().Deserialize<dynamic>(json);
Console.WriteLine(address["postalcode"]);
您还可以使用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
我发现了另外一个相关的帖子:JSON to string array in C#
库:http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx
它看起来像你输入的字符串是一个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();
在正则表达式
命名组由(?<group-name>pattern)
表示。在上述模式中,我们有两个命名组:key
和value
,可以使用Groups
索引器从Match
对象中抓取。
嗨..当我尝试反序列化包含多个对象的json字符串时,此方法抛出异常。有没有办法解决这个问题? – Rajesh
请忽略我上面的评论,JavaScriptSerializer()。DeserializeObject()方法似乎工作正常。 – Rajesh
太棒了。 :)快速和整洁:)'+1'从我。 – sebastian