有没有办法将一些JSON反序列化到DTO,其中JSON包含不带引号的十六进制值?我正在使用JsonConvert.DeserializeObject
。
这是我需要反序列化的JSON。它是由一个设备生成的,我无法控制它:
{"ID":7,"T":1511819861,"E":777, "ET":2,"DEVID":f525873c,"DEVTS":1511801849}
问题在于“DEVID”字段。
我知道这个JSON被认为是无效的,但我需要找到一种方法来处理它。有没有办法配置或投射该字段?
答案 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);
}
你无法在
上测试它