SheepRustler Ответов: 2

Десериализация текста JSON


Я пытаюсь десериализовать следующий текст JSON, но ничего не получается, и я не могу понять, где я иду не так - может ли кто-нибудь указать мне правильное направление, пожалуйста?

{
"данные":
{
"id": 125,
"домен": "Спорт",
"patient_name": "Фред Смит",
"patient_gender": "мужчина",
"patient_image":"https:\/\/mysite.png",
"температура": -105,
"Продолжительность": 130,
"weir_height": 160,
"session_rank": 1,
"next_session_rank": 2,
"next_session_date":
{
"дата": "2017-10-15 10: 00:00.000000",
"timezone_type":3,
"часовой пояс": "UTC"
}
}
}

Я думаю, что это как-то связано с тем, что поля JSON являются подуровнем ключа "данные", и именно с этим мне трудно разобраться, поскольку код работает с данными JSON, которые не имеют этого контейнера.

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

Using response As Net.HttpWebResponse = request.GetResponse
     Using streamReader As New IO.StreamReader(response.GetResponseStream)
     
     Dim jsonResponseText = streamReader.ReadToEnd
     Dim jsonResult As PFCNext = New Web.Script.Serialization.JavaScriptSerializer().Deserialize(jsonResponseText, GetType(PFCNext))
     
    End Using 'streamreader
End Using 'response

    Class PFCNext
        Property Id As String
        Property Domain As String
        Property Patient_name As String
        Property Patient_gender As String
        Property Patient_image As String
        Property Temperature As String
        Property Duration As String
        Property Weir_height As String
        Property Session_rank As String
        Property Next_session_rank As String
        Property Next_session_date As String
        Property Date_ As String
        Property Timezone_type As String
        Property Timezone As String
    End Class

2 Ответов

Рейтинг:
2

Graeme_Grant

Эта статья CodeProject покажет вам, как с помощью исходного кода взять необработанные данные JSON, быстро сгенерировать классы и десериализовать данные: Работа с JSON в C# и VB[^]


SheepRustler

Спасибо, это очень полезно.

Graeme_Grant

Добро пожаловать. Связанная статья была собрана после ответов на многие вопросы, такие как Ваш, о работе с данными JSON, прямо здесь, на форумах вопросов и ответов.

Рейтинг:
14

Richard Deeming

Если вы не пишете пользовательский конвертер, структура вашего класса должна соответствовать структуре вашего JSON:

Class PFCNextWrapper
    Public Property Data As PFCNext
End Class

Class PFCNext
    Public Property Id As Integer
    Public Property Domain As String
    Public Property Patient_name As String
    Public Property Patient_gender As String
    Public Property Patient_image As String
    Public Property Temperature As Integer
    Public Property Duration As Integer
    Public Property Weir_height As Integer
    Public Property Session_rank As Integer
    Public Property Next_session_rank As Integer
    Public Property Next_session_date As NextSessionDate
End Class

Class NextSessionDate
    Public Property [Date] As Date
    Public Property Timezone_type As Integer
    Public Property Timezone As String
End Class

Затем вы можете выполнить десериализацию JSON в PFCNextWrapper тип:
Dim serializer As New Web.Script.Serialization.JavaScriptSerializer()
Dim jsonResult As PFCNextWrapper = CType(serializer.Deserialize(jsonResponseText, GetType(PFCNextWrapper)), PFCNextWrapper)


Mehdi Gholam

Мои 5!

SheepRustler

Отлично, спасибо. Концепция наличия подкласса была для меня новой, так что спасибо за публикацию вашего решения, оно отлично работает.