如何在反序列化 JSon 时获取详细错误



我正在使用 JSon.net 库来反序列化某些对象,它工作正常:

Public Class Person
  Public Property PersonId As Long
  Public Property Name As String
  Public Property SSN As Integer
End Class
Dim json = {'Name':'John', 'SSN':'ABC'}
JsonConvert.DeserializeObject(json, GetType(Person))

但是,在我的情况下,json 可能包含无效数据(如上面的 SSN),在这种情况下,我得到的只是"输入字符串格式不正确"。有没有办法找出哪个字段确切地引发了错误?

如果您的 JSON 格式正确,那么如果无法转换值,Json.Net 应该报告详细的错误。 我使用版本 5.0.8(NuGet 中提供的最新版本)使用以下代码进行了尝试:

Sub Main()
    Dim json As String = "{""Name"":""John"", ""SSN"":""ABC""}"
    JsonConvert.DeserializeObject(json, GetType(Person))
End Sub
Public Class Person
    Public Property PersonId As Long
    Public Property Name As String
    Public Property SSN As Integer
End Class

。我收到了一封带有以下消息文本的JsonReaderException

Could not convert string to integer: ABC. Path 'SSN', line 1, position 27.

如果你得到Input string was not in a correct format,这可能意味着你的 JSON 字符串有问题,使解析器感到困惑。 我注意到在您的问题中,您在属性名称和值周围使用单引号而不是双引号。 根据规范,这在技术上不是有效的JSON(请参阅 JSON.org),并且可能是导致问题的原因。

相关内容

  • 没有找到相关文章

最新更新