0

我正在使用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),在这种情况下,我得到的所有错误都是“输入字符串的格式不正确”。有没有办法找出究竟是哪个领域引发了错误?

4

1 回答 1

1

如果您的 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.org),这在技术上不是有效的 JSON,并且可能是导致问题的原因。

于 2013-10-24T03:31:49.787 回答