0

我正在尝试使用System.Text.RegularExpressions.Regex类从 JSON 字符串中获取一些文本。刺痛是这样的

[{"name":"joe","message":"hello","sent":"datetime"}{"name":"steve","message":"bye","sent":"datetime"}]

我正在尝试使用 Matches() 方法来获取“消息”值。但是,将匹配指定为类似于message":"*","sent模式将返回 3 个匹配项:

hello
bye
hello","sent":"datetime"}{"name":"steve","message":"bye

如何构建选项或修改我的模式以排除递归正则表达式检查?我只想要比赛

hello
bye
4

2 回答 2

1

JSON 最好由 JSON 工具解析。

例如,您可以尝试使用非贪婪语法.*?

于 2012-10-12T01:27:49.623 回答
1

JavaScriptSerializer 类(命名空间 System.Web.Script.Serialization,程序集 System.Web.Extensions.dll)对于处理这样的 JSON 字符串非常有用。

var json = "[{\"name\":\"joe\",\"message\":\"hello\",\"sent\":\"datetime\"},{\"name\":\"steve\",\"message\":\"bye\",\"sent\":\"datetime\"}]";

var serializer = new JavaScriptSerializer();
var result = serializer.Deserialize<object[]>(json);

// now have an array of objects, each of which happens to be an IDictionary<string, object>
foreach(IDictionary<string, object> map in result)
{
    var messageValue = map["message"].ToString();
    Console.WriteLine("message = {0}", messageValue);
}
于 2012-10-12T02:35:50.050 回答