使用不带引号的十六进制值反序列化JSON

时间:2017-11-30 15:32:05

标签: c# json json.net deserialization json-deserialization

有没有办法将一些JSON反序列化到DTO,其中JSON包含不带引号的十六进制值?我正在使用JsonConvert.DeserializeObject

这是我需要反序列化的JSON。它是由一个设备生成的,我无法控制它:

{"ID":7,"T":1511819861,"E":777, "ET":2,"DEVID":f525873c,"DEVTS":1511801849}

问题在于“DEVID”字段。

我知道这个JSON被认为是无效的,但我需要找到一种方法来处理它。有没有办法配置或投射该字段?

1 个答案:

答案 0 :(得分:1)

由于您无权修复响应,我建议您在反序列化之前修复json。我做了这个功能,可能会给你一个如何解决问题的提示:

public static string FixJson(string json, string property) {
        var index = json.IndexOf(property);     
        var indexColon = json.IndexOf(':', index + 1);      
        var indexComma = json.IndexOf(',', index + 1);      
        var val = json.Substring(indexColon + 1, indexComma - indexColon - 1);      
        var replace = string.Format("'{0}': {1}", property, val.Trim());        
        var forR = string.Format("'{0}': '{1}'", property, val.Trim());     
        return json.Replace(replace, forR);
}

你无法在

上测试它

https://dotnetfiddle.net/kidAIO