2016-08-30 3 views
0

私はので、私はデシリアライザにカスタム設定を追加JSONで$typeプロパティを使用して、いくつかの多型の型を作成する必要があります。設定が指定されてカスタムJsonSerializerSettingsで配列を作成する方法

var jsonSerializerSetting = new JsonSerializerSettings 
{ 
    TypeNameHandling = TypeNameHandling.Auto 
}; 

しかし、今私はもう配列をデシリアライズすることができず、このような何か:

var arr = (string[])JsonConvert.DeserializeObject(@"[ 'foo' ]", jsonSerializerSetting); 

はで終わる:

型のオブジェクトをキャストすることができません

'Newtonsoft.Json.Linq.JArray'を入力します'System.String []'

デフォルトのnew JsonSerializerSettings()であっても失敗します。私は何かをリセットしなければならないと思うが、何が分からないのか分からない。

アレイ/リストの作成を元に戻しても、ポリモーフィック型を作成することはできますか?

答えて

1

InvalidCastExceptionは、TypeNameHandling.Autoとは関係ありません。問題は、あなたがDeserializeObject()generic versionを使用していないことです。あなたは実行する必要があります。

var arr = JsonConvert.DeserializeObject<string []>(@"[ 'foo' ]", jsonSerializerSetting); 

あなたは確かに戻ります使用している非ジェネリックJsonConvert.DeserializeObject(string, JsonSerializerSettings) LINQツーJSON string []への暗黙的または明示的なキャストを持っていませんJArray

+0

これはあまりにも簡単でした;-)私はキャストを使用して、なぜ私はもう動作しないのだろうと思っていた設定を追加しました。私はそれが実際にジェネリックパラメータかもしれないとは思わなかった。 – t3chb0t

関連する問題