我正在使用 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),并且可能是导致问题的原因。