を使用して失敗しました。C#デシリアライズ辞書<Int,Object>は私がシリアライズ/デシリアライゼーションのためNewtonsoft Json.NETライブラリを使用していますJson.NET
プロパティのようなプロパティを持つオブジェクトを直列化解除する際に問題が発生しました。辞書< int、object>です。辞書では、Objectはどんなタイプでもかまいません。ここで
は、私がテストのためにやっていることです。簡単なWPFアプリケーションでボタンクリックで
[DataContract]
public class MyClass
{
[DataMember(Order = 1)]
public int ID { get; set; }
[DataMember]
public string Text { get; set; }
[DataMember]
public Dictionary<int,object> sub { get; set; }
}
[DataContract]
public class MyClass2
{
[DataMember]
public int ID2 { get; set; }
[DataMember]
public string Text2 { get; set; }
}
。
MyClass c = new MyClass() { ID = 1, Text = "Hello", sub = new Dictionary<int, object>() };
MyClass2 c2 = new MyClass2() { ID2 = 2, Text2 = "sub1" };
c.sub.Add(1, c2);
MyClass2 c3 = new MyClass2() { ID2 = 3, Text2 = "sub2" };
c.sub.Add(2, c3);
string file = "c:\\newfile.txt";
if (File.Exists(file))
File.Delete(file);
Newtonsoft.Json.JsonSerializer ser = new Newtonsoft.Json.JsonSerializer();
File.WriteAllText(file, JsonConvert.SerializeObject(c));
MyClass o = JsonConvert.DeserializeObject<MyClass>(File.ReadAllText(file));
}
Serilaized JSON文字列 -
{ "テキスト": "こんにちは"、 "サブ":{ "1":{ "ID2":2、 "テキスト2": "SUB1"} 、 "2":{ "ID2":3、 "テキスト2": "SUB2"}}、 "ID":デシリアライゼーションで1}
- MyClassのインスタンスのproertiesが解決されるが、プロパティ辞書(サブ)には、まだMyClass2に解決されていないjson文字列があります。
誰も私を助けてくださいことはできますか?
'TypeNameHandling.All'を使用してみてください。 [TypeName Handling setting](http://www.newtonsoft.com/json/help/html/serializetypenamehandling.htm)を参照してください。 – dbc
こちらを参照してください:[Newtonsoft JSON.NETとIEnumerableをにJSONをデシリアライズする方法](https://stackoverflow.com/questions/6348215/how-to-deserialize-json-into-ienumerablebasetype-with-newtonsoft-json-net/6495299#6495299)。 –
dbc
@dbc:TypeNameHandling.Allで動作することを理解します。解決していただきありがとうございます。このjsonをJavascriptオブジェクトに送り、同じ形式で返すことは可能ですか?ここ – Jeet