Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parsing F#Newtonsoft.Json.JsonReaderException:解析值时遇到意外字符:{_Parsing_F#_Json.net - Fatal编程技术网

Parsing F#Newtonsoft.Json.JsonReaderException:解析值时遇到意外字符:{

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

我有一个日志需要用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: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>
列表

作为序列化类型?这将是理想的,因为这是您开始的,假设我没有误解任何东西。

好的,但在这种情况下如何强制它为字符串?在数据周围添加双引号或将数据作为动态数据?将双引号与其余数据混淆。是否可以覆盖“数据”的方式是反序列化的吗?这样我就可以把所有的都当作字符串了?根据你想对数据做什么,你可以把类型序列化为“动态”