需要你的帮助。
所以,我有 json 模式,我使用了 NJsonSchema.CodeGeneration工具生成 .cs 模型。我能够使用它成功地将 json 反序列化为对象,直到输入 json 包含带有空格的枚举值。
这就是我所说的
在架构中,我有一个属性,例如:
...
prop1: {
enum: [ 'with space', 'withoutspace' ],
},
...
在生成的 .cs 模型中,我有一个相应的枚举:
[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,
}
这里有两个输入示例:Json 1:
{
...
"prop1": "with space",
...
}
json 2:
{
...
"prop1": "withoutspace",
...
}
然后我只是在需要时反序列化它:
var someModel = Some.FromJson(json);
它以 Json 2 的方式工作,但它无法识别带有空格的枚举值,并出现如下错误:
“将值“带空格”转换为类型“com.company.model.Some_prop1”时出错。路径“prop1”,第 7 行,位置 24。”
所以这是我的主要问题:有没有办法在不改变模式中枚举格式的情况下处理这种情况?
额外的小问题:在调查时我又遇到了一个问题 - 如果我要使用 some.ToJson() 之类的序列化,我的枚举将以"prop1": 0 之类的方式生成,使用 int< 并且因为 json 被用作用户友好改变事物的方式,我需要像"prop1": "with space"这样的方式。
问候,康斯坦丁。