【问题标题】:Deserialize undefined value with Newtonsoft.Json使用 Newtonsoft.Json 反序列化未定义的值
【发布时间】:2020-05-28 10:02:50
【问题描述】:

是否可以反序列化值为 undefined(不带引号)的字符串?

使用默认设置运行 JsonConvert.DeserializeObject 会导致异常

解析值时遇到意外字符:u。小路 '消息'

示例 JSON:

{
"name":"nameval",
"message":undefined
}

我尝试像这样反序列化它:

JsonConvert.DeserializeObject<Record>(json);

具有以下数据类:

public class Record
{
    public string Name {get;set;}
    public string Message {get;set;}
}

我假设示例中的此类 JSON 值可能不是 100% 有效,但我需要能够处理它。

更新:

可以用 JObject 解析这个 JSON 并替换未定义的值。但是解决方案不是很优雅。

【问题讨论】:

  • 这不是有效的 JSON!
  • 这能回答你的问题吗? JSON undefined value type
  • 如果你需要处理无效的json那么你首先需要使它有效。
  • 我见过“JSON 未定义值类型”,但我需要一个可以处理 .NET 生态系统中未定义值的解决方案

标签: c# .net json json.net


【解决方案1】:

正如this answer 中所指出的,undefined 不是有效的 JSON 值,因此 Newtonsoft 有理由不处理它。

您可以编写一个自定义清理程序,在将undefined 传递给null 之前将其查找并替换为JsonConvert.DeserializeObject&lt;Record&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 2021-09-16
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多