Parsing F#Newtonsoft.Json.JsonReaderException:解析值时遇到意外字符:{
我有一个日志需要用JSON.net 11.0.2进行序列化/反序列化。我可以序列化它,但当反序列化失败时: Newtonsoft.Json.JsonReaderException:遇到意外字符 分析值时:{.Path'[0].data',第10行,位置13 对象是Parsing F#Newtonsoft.Json.JsonReaderException:解析值时遇到意外字符:{,parsing,f#,json.net,Parsing,F#,Json.net,我有一个日志需要用JSON.net 11.0.2进行序列化/反序列化。我可以序列化它,但当反序列化失败时: Newtonsoft.Json.JsonReaderException:遇到意外字符 分析值时:{.Path'[0].data',第10行,位置13 对象是 type LogRow = { log_id:int64 source_id:int32 source:string action:string data:string changeby
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)
JsonConvert.DeserializeObject(json)
在这两种情况下都失败了。我在python中尝试了相同的json,并且正在工作,所以一定是json.net的什么东西
p.D:数据的内容不是固定的。这就是为什么我需要将其作为字符串而不是对象来获取的原因。要使数据成为字符串类型,数据需要在引号中。 如果它不在引号中,则假定它是另一个对象,并将尝试反序列化该对象
List<Dictionary<string, object>>
列表
对于目标序列化类型——JSON对象中的一些值不是字符串值
还有,你试过使用吗
List<LogRow>
列表
作为序列化类型?这将是理想的,因为这是您开始的,假设我没有误解任何东西。好的,但在这种情况下如何强制它为字符串?在数据周围添加双引号或将数据作为动态数据?将双引号与其余数据混淆。是否可以覆盖“数据”的方式是反序列化的吗?这样我就可以把所有的都当作字符串了?根据你想对数据做什么,你可以把类型序列化为“动态”