0

C# モデルに、次の文字列が取り込まれた文字列があります。

"[{\"ta_id\":97497,\"partner_id\":\"229547\",\"partner_url\":\" http://partner.com/deeplink/to/229547 \"},{\ "ta_id\":97832,\"partner_id\":\"id34234\",\"partner_url\":\" http://partner.com/deeplink/to/id34234 \"}]"

LINQ または RegEx を使用して、partner_id を解析できる方法はありますか?

229547
id34234

助けてくれてありがとう、マーク

4

4 に答える 4

0

これは JSON であるため、わざわざ正規表現を機能させようとする必要はありません。代わりに、JSON を解析してから LINQ を使用できます。

using System.Web.Script.Serialization; // (in System.Web.Extensions.dll)

...

string s = "[{\"ta_id\":97497,\"partner_id\":\"229547\",\"partner_url\":\"http://partner.com/deeplink/to/229547\"},{\"ta_id\":97832,\"partner_id\":\"id34234\",\"partner_url\":\"http://partner.com/deeplink/to/id34234\"}]";
JavaScriptSerializer j = new JavaScriptSerializer();
object[] objects = (object[])j.DeserializeObject(s);
string[] ids = objects.Cast<Dictionary<string, object>>()
                      .Select(dict => (string)dict["partner_id"])
                      .ToArray();

型情報がないため、オブジェクトに逆シリアル化するのは少し面倒です。逆シリアル化する小さなクラスを作成することを恐れていない場合は、次のようなことができます。

class Foo
{
    public string partner_id
    {
        get;
        set;
    }
}

...

JavaScriptSerializer j = new JavaScriptSerializer();
string[] ids = j.Deserialize<Foo[]>(s).Select(x => x.partner_id).ToArray();

JSON を逆シリアル化するための他のオプションがあることに注意してください。内蔵されている最も汎用性の高いものを選択しただけです。

于 2013-11-05T13:00:32.480 に答える