0

System.Text.RegularExpressions.Regexクラスを使用して、JSON 文字列からテキストを取得しようとしています。刺傷は次のようなものです

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

Matches() メソッドを使用して「メッセージ」値を取得しようとしています。ただし、パターンのように一致を指定すると、message":"*","sent3 つの一致が返されます。

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

オプションを構成したり、パターンを変更して再帰的な正規表現チェックを除外するにはどうすればよいですか? 欲しいのは試合だけ

hello
bye
4

2 に答える 2

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 に答える
1

JSON は、JSON ツールによってより適切に解析されます。

.*?たとえば、貪欲でない構文を使用してみることができます。

于 2012-10-12T01:27:49.623 に答える