Member 13888540 Ответов: 2

Преобразовать в JSON Object ошибка десериализации


Я все время получаю эту ошибку.

Невозможно десериализовать текущий объект JSON

Public Class Header
    Public deviceEnrollmentTransactionID As String
    Public completedOn As String
    Public orders As List(Of OrdersDetails)
    Public statusCode As String
    Public errorCode As String
    Public errorMessage As String
    Public transactionId As String


End Class

Public Class OrdersDetails
    Public Property orderNumber As String
    Public Property orderPostStatus As String
    Public Property orderPostStatusMessage As String
    Public Property deliveries As List(Of DeliveriesDetails)

End Class

Public Class DeliveriesDetails
    Public Property deliveryNumber As String
    Public Property deliveryPostStatus As String
    Public Property devices As List(Of DevicesDetails)

End Class

Public Class DevicesDetails
    Public Property deviceId As String
    Public Property devicePostStatus As String
    Public Property devicePostStatusMessage As String

End Class


Dim varses = JsonConvert.DeserializeObject(Of Header())(content)



содержание
"{
	"deviceEnrollmentTransactionID":"5b1354db-60de-4a77-8bb2-cec0357c0cd0_1529483946450",
	"completedOn":"2018-06-20T08:39:14Z",
	"orders":
		[{"orderNumber":"SO_1234",
		  "orderPostStatus":"abc",
		  "orderPostStatusMessage":"xxx."
		}],
	"statusCode":"ERROR"
}"


Что я уже пробовал:

Может ли кто-нибудь помочь мне выяснить, в чем проблема? Я попробовал поискать в google, но безуспешно.

2 Ответов

Рейтинг:
15

Member 13888540

Я изменил код на ниже и решил эту проблему.

Dim varses As header = JsonConvert.DeserializeObject(Of header)(content)


Рейтинг:
0

Bryian Tan

Похоже, что приведенный ниже оператор ожидает преобразования строки в список/массив заголовка, но строка (содержимое) находится не в правильном формате.

Dim varses = JsonConvert.DeserializeObject(Of Header())(content)


Попробуйте обернуть строку содержимого с помощью []. см., например, ниже.

Dim content = "[{" _
    + """deviceEnrollmentTransactionID"" : ""5b1354db-60De-4a77-8bb2-cec0357c0cd0_1529483946450""," _
    + """completedOn"":""2018-06-20T0839:14Z""," _
    + """orders"":" _
    + "[{""orderNumber"":""SO_1234"", " _
    + """orderPostStatus"":""abc""," _
        + """orderPostStatusMessage"":""xxx.""" _
        + "}]," _
    + """statusCode"":""ERROR""" _
+ "}]"
        Dim varses = JsonConvert.DeserializeObject(Of Header())(content)


Преобразование строки с несколькими заголовками.
Dim content = "[{" _
    + """deviceEnrollmentTransactionID"" : ""5b1354db-xxxx-4444-yyyy-cec0357c0cd0_1529483946450""," _
    + """completedOn"":""2018-07-20T0839:14Z""," _
    + """orders"":" _
    + "[{""orderNumber"":""SO_1234"", " _
    + """orderPostStatus"":""abc""," _
        + """orderPostStatusMessage"":""YYY.""" _
        + "}]," _
    + """statusCode"":""WHAT""" _
+ "},{" _
    + """deviceEnrollmentTransactionID"" : ""5b1354db-60De-4a77-8bb2-cec0357c0cd0_1529483946450""," _
    + """completedOn"":""2018-06-20T0839:14Z""," _
    + """orders"":" _
    + "[{""orderNumber"":""SO_1234"", " _
    + """orderPostStatus"":""abc""," _
        + """orderPostStatusMessage"":""xxx.""" _
        + "}]," _
    + """statusCode"":""ERROR""" _
+ "}]"
        Dim varses = JsonConvert.DeserializeObject(Of Header())(content)