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

Deserialize JSON with Unquoted Hexadecimal Values

有没有办法将某些 JSON 反序列化为 JSON 包含未加引号的十六进制值的 DTO?我正在使用 JsonConvert.DeserializeObject.

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

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

问题出在字段 "DEVID"。

我知道这个 JSON 被认为是无效的,但我需要找到一种方法来处理它。有什么方法可以配置或转换该字段吗?

由于您无权修复响应,我建议您在反序列化之前修复 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