当字符串以Json.Net中的数字开头时,如何处理从字符串到枚举的转换

时间:2015-12-08 15:33:37

标签: c# json json.net

我从服务器接收json,我将使用Json.Net转换为对象。对于一个成员,我使用的StringEnumConverter非常完美。

然而,突然之间服务器决定使用字符串,这些字符串也可能以一个导致JsonSerilizationException的数字开头 - 显然是因为枚举不能以.Net中的数字开头。

现在我正试图找到一个解决方案来解决这个问题。我的第一个方法是添加一个" _"当读取Json时(因此我的代码中的枚举将有一个起始_,当它们后跟一个数字时)并且当写json时我将删除起始_(如果数字跟随)。为此,我将StringEnumConverter复制到我的命名空间,并尝试更改WriteJsonReadJson方法中的相应部分。但是我无法使用StringEnumConverter,因为我无法在自己的命名空间中访问其他依赖项。

这个问题有没有优雅的解决方案?

2 个答案:

答案 0 :(得分:3)

您可以创建>>> import scipy >>> scipy.__version__ '0.13.3' >>> import numpy >>> numpy.__version__ '1.8.2' >>> from PIL import Image >>> Image.VERSION '1.1.7' 并修剪前面的数字

JsonConverter

希望这有帮助。

编辑:添加了对整数的支持:D

答案 1 :(得分:1)

一个简单的策略是将值反序列化为string属性,然后通过访问器方法或辅助的getter-only属性转换为您自己的数据类型(枚举或其他)。