0

プロジェクトの一部としてプレイリストファイルを解析する必要があります。

レイアウトは次のようになります。

{
         "info" : "",
         "time" : "05:00",
         "url_stream" : "http://loopstream01.apa.at/?channel=oe1&id=20120726_0500_1_2_nachrichten_XXX_w_",
         "day_label" : "26.07.2012",
         "short_title" : "Nachrichten",
         "url_detail" : "",
         "url_json" : "/programm/308178/konsole",
         "parts" : [],
         "tag" : "",
         "id" : "308178",
         "title" : "Nachrichten",
         "url_playlist" : "/programm/308178/playlist"
      },........... and so on

ここで、「プロパティ」の値を取得したいと思います。これを試してみました

"info" : "(?<info>(([^"]*)))", ....

しかし、次のようなものがある可能性があるため、バグがあります。

"info": "Hello" World "これはテストでした"、

「World」も「」に含まれているので、バグが発生します。誰かが私のために良いそしてきれいな解決策を持っていますか?

4

3 に答える 3

2

ここJavaScriptSerializerでMicrosoftによって文書化されているクラスを使用して、JSONを逆シリアル化します。これは、正規表現よりもはるかに簡単です。

于 2012-07-26T19:10:09.107 に答える
0

インターネットで似たようなページを2つ見つけました。これらは、以下のようにJson.Netを使用して解析できます。

using (var wc = new WebClient())
{
    string url = "http://derruki.dyndns.org/oe1rip/json-list-source.php";
    string json = wc.DownloadString(url);

    dynamic dynObj = JsonConvert.DeserializeObject(json);
    foreach(var item in dynObj)
    {
        Console.WriteLine("INFO:{0}\nTITLE:{1}\nURL:{2}\n\n",
            item.info, item.short_title, item.url_stream);
    }
}

forhttp://oe1.orf.at/programm/konsole/tag/20120726ループを次のように変更する必要があります

foreach(var item in dynObj.list)
于 2012-07-26T19:38:06.287 に答える
0

これを試してください:

(?<=[\n\r])[^\S\n\r]*"info"[^\S\n\r]*:[^\S\n\r]*"(?<info>.*?)",?[^\S\n\r]*(?=[\n\r])
于 2012-07-27T14:15:45.393 に答える