我从服务器接收json,我将使用Json.Net转换为对象。对于一个成员,我使用的StringEnumConverter
非常完美。
然而,突然之间服务器决定使用字符串,这些字符串也可能以一个导致JsonSerilizationException的数字开头 - 显然是因为枚举不能以.Net中的数字开头。
现在我正试图找到一个解决方案来解决这个问题。我的第一个方法是添加一个" _"当读取Json时(因此我的代码中的枚举将有一个起始_,当它们后跟一个数字时)并且当写json时我将删除起始_(如果数字跟随)。为此,我将StringEnumConverter
复制到我的命名空间,并尝试更改WriteJson
和ReadJson
方法中的相应部分。但是我无法使用StringEnumConverter
,因为我无法在自己的命名空间中访问其他依赖项。
这个问题有没有优雅的解决方案?
答案 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属性转换为您自己的数据类型(枚举或其他)。