あなたの助けが必要です。NJsonSchemaへのJsonの逆シリアル化は、空白を含む列挙型のオブジェクトを生成しました
私はjsonスキーマを持っていて、私はNJsonSchema.CodeGenerationツールを使用して.csモデルを生成しました。私は入力jsonがスペースを含むenum値を含むまで、jsonをオブジェクトに逆シリアル化するためにそれを使用することができました。
[System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "7.10.6235.25398")]
public enum Some_prop1
{
[System.Runtime.Serialization.EnumMember(Value = "with space")]
With_Space = 0,
[System.Runtime.Serialization.EnumMember(Value = "withoutspace")]
Withoutspace= 1,
}
そして、ここで:私は、対応する列挙型を持っている.csファイル生成されたモデルで
...
prop1: {
enum: [ 'with space', 'withoutspace' ],
},
...
:ここ
は、私のような性質を持っている私は、スキーマは約
を話しているものです2つの入力例です: Json 1:
{
...
"prop1": "with space",
...
}
JSON 2:
{
...
"prop1": "withoutspace",
...
}
と私はそれを必要とするとき、私はちょうどそれをデシリアライズ:
var someModel = Some.FromJson(json);
それはそれはJSON 2のためにすべきであるように動作しますが、それはして列挙型の値を認識できません 『com.company.model.Some_prop1』と入力する
スペース\と「変換エラー値\」」:このようなエラーが発生した空間。パス「PROP1」、7行目、位置24」だからここ
は私のメインの質問です:?はスキーマに列挙型のフォーマットを変更することなく、このような状況に対処する方法がある
小追加の質問:私はいくつかのようなシリアル化を使用する場合、私はもう1つの問題に直面している - 私は、"prop1"のような方法で生成されます:0、int <とjsonはユーザ友好的な方法を変更するには、私は"prop1"のような方法でそれが必要です: "スペース"。
よろしく、Kanstantsin。
メソッドSome.FromJson(json);のソースを共有できますか?基になるシリアライザはJson.NETでなければなりません。これは['StringEnumConverter'](http://www.newtonsoft.com/json/help/html/T_Newtonsoft_Json_Converters_StringEnumConverter.htm)が使用されている限り、enumを文字列として直列化することをサポートしています。 – dbc
はい、そうです。ことは、メソッドが生成され、私はこのコンバータに到達する適切な方法を見つけることができませんでした。私は答えの解決に過ぎません。私は間違ってそれを見つけました。 – kikaxa