1

辞書に入れる必要がある次のテキストがあります。一見、とても簡単だと思いましたが、最終的には広範な文字列検索を行って、パーサーを壊す値を見つけることがあることに気付きました。

"0": 
{
    "key":"valueWithAnyCharInside",
    "key2":"valueWithAnyCharInside",
    "key3":"valueWithAnyCharInside" 
},

これは、次のモデルにマップされます。

class Item
{
    private int id;
    private Dictionary<string, string> data;
}

何か案は?たぶん正規表現を使用しています...

4

1 に答える 1

4

データ形式はおそらく JSON ですが、その一部しか提供していません。次のように少し変更しました。

{"0":
    {
        "key":"valueWithAnyCharInside",
        "key2":"valueWithAnyCharInside",
        "key3":"valueWithAnyCharInside" 
    }
}

これで、次のように解析できます。

string json = ...; //your json goes here

var serializer = new JavaScriptSerializer();
var parsed =  serializer.Deserialize<Dictionary<string, Dictionary<string, string>>>(json);

//printing data
parsed["0"].Select(pair => string.Format( "{0} - {1}", pair.Key, pair.Value))
           .ToList()
           .ForEach(Console.WriteLine);

プリント:

key - valueWithAnyCharInside
key2 - valueWithAnyCharInside
key3 - valueWithAnyCharInside

強く型付けするにList<Item>は、次のコードを使用します

List<Item> items = parsed.Select(pair => new Item { Id = int.Parse(pair.Key),
                                                    Data = pair.Value})
                         .ToList();

アイテムの場所:

class Item
{
    public int Id { get; set; }
    public Dictionary<string, string> Data {get;set;}
}
于 2013-05-28T10:14:19.077 に答える