オブジェクトをDictionary
(JsonConvert.DeserializeObject<IDictionary<string,object>>(json)
)に逆シリアル化すると、JObject
にデシリアライズされます。ネストしたオブジェクトを非直列化して強制的にDictionary
にすることはできますか?Json.NET:ネストされた辞書の逆シリアル化
22
A
答えて
32
私はCustomCreationConverter
実装を提供することにより、Dictionary<string,object>
に、すべてのネストされたオブジェクトを変換する方法を見つけました:
class MyConverter : CustomCreationConverter<IDictionary<string, object>>
{
public override IDictionary<string, object> Create(Type objectType)
{
return new Dictionary<string, object>();
}
public override bool CanConvert(Type objectType)
{
// in addition to handling IDictionary<string, object>
// we want to handle the deserialization of dict value
// which is of type object
return objectType == typeof(object) || base.CanConvert(objectType);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
if (reader.TokenType == JsonToken.StartObject
|| reader.TokenType == JsonToken.Null)
return base.ReadJson(reader, objectType, existingValue, serializer);
// if the next token is not an object
// then fall back on standard deserializer (strings, numbers etc.)
return serializer.Deserialize(reader);
}
}
class Program
{
static void Main(string[] args)
{
var json = File.ReadAllText(@"c:\test.json");
var obj = JsonConvert.DeserializeObject<IDictionary<string, object>>(
json, new JsonConverter[] {new MyConverter()});
}
}
-1
オルタナティブ/更新:
私は逆シリアル化するために必要な辞書の辞書String
と現在のJson.NET(5.0)で私はCustomConverterを作成する必要はありません、私はjus tは(VB.Netで)使用:
JsonConvert.DeserializeObject(Of IDictionary(Of String, IDictionary(Of String, String)))(jsonString)
または、C#で:
JsonConvert.DeserializeObject<IDictionary<String, IDictionary<String, String>>(jsonString);
関連する問題
- 1. Json.netを使用してインターフェイス値を持つ複雑なネストされた辞書型を逆シリアル化する
- 2. Json.Net JObjectや辞書に逆シリアル化する方が速いのですか?
- 3. JSON.NETを使用してJSONを辞書に逆シリアル化する方法
- 4. リンクコレクションを辞書に逆シリアル化する
- 5. NewtonSoft.Json、辞書の子辞書を逆シリアル化できません
- 6. VB.netでのJSON.Netの逆シリアル化
- 7. Json.netでのプロパティのカスタム逆シリアル化
- 8. Json.NETとNHibernate - 永続オブジェクトの逆シリアル化
- 9. JSON.NETオブジェクトの逆シリアル化と削除
- 10. Json.netの逆シリアル化で空のオブジェクトが返されます
- 11. json.netでJSONを逆シリアル化する
- 12. JSON.NET - 条件付きタイプ逆シリアル化
- 13. JSON.NETはプライベートプロパティに逆シリアル化されません
- 14. Json.netは派生型をシリアル化/逆シリアル化しますか?
- 15. C#を辞書に逆シリアル化して逆にするKV
- 16. Javaでスカラー逆シリアル化されたオブジェクトを逆シリアル化する
- 17. ネストされたXMLアイテムを逆シリアル化する
- 18. CネストされたJsonデータを逆シリアル化する方法
- 19. Java SimpleXMLでネストされたオブジェクトを逆シリアル化する方法
- 20. 逆シリアル化JSONウェブAPIレスポンスに - ネストされたオブジェクト
- 21. 逆シリアル化の逆シリアル化
- 22. JSON.netと.net WebApiを使用したTimeSpanの逆シリアル化
- 23. JSON.NETは、プロパティとして格納されたJSONオブジェクトを逆シリアル化します。
- 24. ネストされた辞書
- 25. ネストされたリソース辞書
- 26. ネストされた辞書
- 27. Cで特定のネストされた辞書キーでネストされた辞書でグループ化する#
- 28. JSON.NETを使用して辞書<文字列、オブジェクト>を逆シリアル化してシリアライズ
- 29. Jsonは辞書としてオブジェクトを逆シリアル化します
- 30. XMLを辞書に逆シリアル化する<string、string>
これは、適切に変換され、再帰/未知のJSON構造をサポートしていません。 –
これは具体的には固定レベルの入れ子 – Javier