我有一个需要使用JSON.net 11.0.2序列化/反序列化的日志。我可以序列化它,但是当反序列化它失败时:
Newtonsoft.Json.JsonReaderException:遇到意外的字符 在解析值时:{。路径' [0] .data',第10行,第13位。
对象是
type LogRow = {
log_id:int64
source_id:int32
source:string
action:string
data:string
changeby:string
version:int32
timestamp:DateTime
}
,JSON是:
[
{
"log_id": -1,
"source": "Auth",
"source_id": -1,
"action": "CreatedUser",
"version": -2,
"changeby": "admin",
"timeStamp": "2018-06-14T20:33:52.835199Z",
"data": {
"user_id": -1,
"username": "admin",
"name": "Administrator",
"email": "test@test.com",
"password": "123",
"role": "admin",
"is_active": true
}
}
]
我尝试使用对象反序列化,并作为字典,如:
JsonConvert.DeserializeObject<List<Dictionary<string, string>>>(json)
在这两种情况下都失败了。我在python中尝试相同的json并且正在工作,所以必须使用json.net吗?
P.D:DATA的内容不固定。这就是为什么我需要将它作为字符串,而不是作为对象。
答案 0 :(得分:2)
要使数据成为字符串类型,它们的数据必须在引号中。 如果它不在引号中,它会假定它是另一个对象,并会尝试反序列化
答案 1 :(得分:2)
尝试
List<Dictionary<string, object>>
表示目标序列化类型 - JSON对象中的某些值不是字符串值。
此外,您是否尝试过使用
List<LogRow>
作为序列化类型?这是理想的,因为那是你的开始,假设我没有误解某些东西。