0
使用Json.NET開箱即用(取消)序列化通用字典似乎是不可能的。Json.NET和通用字典
class KeyClass
{
public KeyClass(string p1, string p2) { prop1 = p1; prop2 = p2;}
public string prop1 { get; set; }
public string prop2 { get; set; }
}
class ValueClass
{
public ValueClass(string pa, string pb) { propA = pa; propB = pb;}
public string propA { get; set; }
public string propB { get; set; }
}
...
Dictionary<KeyClass, ValueClass> d = new Dictionary<KeyClass, ValueClass>();
d.Add(new KeyClass("k1", "k2"), new ValueClass("v1", "v2"));
d.Add(new KeyClass("k3", "k4"), new ValueClass("v3", "v4"));
string json = JsonConvert.SerializeObject(d);
回報
{"ConsoleApplication1.KeyClass":{"propA":"v1","propB":"v2"},
"ConsoleApplication1.KeyClass":{"propA":"v3","propB":"v4"}}
,我希望是這樣的:
{{"prop1":"k1","prop2":"k2"}:{"propA":"v1","propB":"v2"},
{"prop1":"k3","prop2":"k4"}:{"propA":"v3","propB":"v4"}}
所以ToString()
被稱爲上鍵(KeyClass)。 (生成json的重寫不會幫助:轉義json,但感覺不對)。
是否有可能爲這種情況寫一個CustomCreationConverter?
這是一個硬 json.NET的侷限性?
如果是這樣,其他圖書館是否支持這一點?
好奇,你爲什麼不做「{」key「:」val「},這就是地圖應該用JSON表示的方式,最後我檢查了 – casperOne 2010-08-11 18:20:47
@casperOne:這兩個類只是例子,嘗試'jsonify'包含更多的屬性:在我的情況下,KeyClass是表示語言的對象,ValueClass是表示該語言標籤的對象。 – jan 2010-08-11 18:58:14