Отключить использование JSON.net

Я очень новичок в json, JSON.net и все такое. Прочитав похожие вопросы, я не могу заставить мой код работать. Что такое моя ошибка? Что я наблюдал? Можно ли пропускать classы «ссылки» и «мета» для целей тестирования или мне нужно определить КАЖДОЕ свойство?

У меня есть следующий выход REST:

{ "codes" : [ { "href" : "https://www.someserver.com/form_definitions/OIlG4GxMyeh0sdrt3AYuaXbauGicW71M/field_definitions/zFEova6LiPM/codes/4Sxnr961xzM", "rel" : "document_field_definition_code", "title" : "TITLE 1" }, { "href" : "https://www.someserver.com/form_definitions/OIlG4GxMyeh0sdrt3AYuaXbauGicW71M/field_definitions/zFEova6LiPM/codes/buho0CsLc5k", "rel" : "document_field_definition_code", "title" : "TITLE 2" }, { "href" : "https://www.someserver.com/form_definitions/OIlG4GxMyeh0sdrt3AYuaXbauGicW71M/field_definitions/zFEova6LiPM/codes/RvQoykUM_Sk", "rel" : "document_field_definition_code", "title" : "TITLE 3" } ], "links" : [ { "about" : "https://www.someserver.com/form_definitions/OIlG4GxMyeh0sdrt3AYuaXbauGicW71M/field_definitions/zFEova6LiPM/codes?about=1", "href" : "https://www.someserver.com/form_definitions/OIlG4GxMyeh0sdrt3AYuaXbauGicW71M/field_definitions/zFEova6LiPM/codes", "method" : "GET", "rel" : "self", "title" : null, "type" : "codes" }, { "href" : "https://www.someserver.com/form_definitions/OIlG4GxMyeh0sdrt3AYuaXbauGicW71M/field_definitions/zFEova6LiPM/codes", "method" : "POST", "rel" : "codes", "title" : "create new codes entity" } ], "meta" : { "description" : null, "last_page" : 1, "page_offset" : 0, "page_size" : 50, "query-template" : "/codes{?query_search,page_offset,page_size,query_identification,embedded,properties,about}", "total" : 6 } } 

Поскольку я не получил доступ, мне нужны три classа: например, коды, ссылки и мета.

Я создал class «clscodes»:

 Public Class clsCode Private m_href As String Private m_rel As String Private m_title As String Public Property Href As String Get Return m_href End Get Set(value As String) m_href = value End Set End Property Public Property Rel As String Get Return m_rel End Get Set(value As String) m_rel = value End Set End Property Public Property Title As String Get Return m_title End Get Set(value As String) m_title = value End Set End Property End Class 

И я создал class clsValuelist:

 Public Class clsWerteliste Private m_code As IList(Of clsCode) Public Property Code() As clsCode() Get Return m_code End Get Set(value As clsCode()) m_code = value End Set End Property End Class 

Когда я пытаюсь десериализовать это, я получаю «ничего», как в «CoolOutput»,

 Dim CoolOutput As New clsWerteliste CoolOutput = JsonConvert.DeserializeObject(Of clsWerteliste)(jsonstring) 

Ваши classы довольно близки, похоже, что вы, возможно, пытались немного переделать такие вещи, как смена codes на Codes но при этом свойства больше не совпадают. Вы можете изменить имена classов, но не имена свойств (по крайней мере, не так):

 Public Class CodeLinkContainer  Public Property Codes As IList(Of Code)  Public Property Links As IList(Of Link)  Public Property Meta As Meta End Class Public Class Meta Public Property description As Object Public Property last_page As Integer Public Property page_offset As Integer Public Property page_size As Integer Public Property querytemplate As String Public Property total As Integer End Class Public Class Code Public Property href As String Public Property rel As String Public Property title As String End Class Public Class Link Public Property about As String Public Property href As String Public Property method As String Public Property rel As String Public Property title As String Public Property type As String End Class 

Использование свойств AutoImplement, доступных в течение некоторого времени, означает, что вы можете пропустить весь код Get , Set patplate. VS также создаст для вас classы:
Меню «Правка» -> « Вставить» -> « Вставить» Json As Classes

Иногда вам нужно настроить class, если есть свойство array / list. Например, роботы могут писать:

 Public Property elements() As Element 

Когда это должно быть:

 Public Property elements As Element() 

Класс контейнера показывает, как использовать чтобы изменить имя свойства, если хотите. Это часто необходимо сделать для создания псевдонима для имени свойства, которое является ключевым словом в VB ( Return , Error т. Д.). В этом случае я изменил codes и links как Lists как вы это делали.

  Dim jstr = ... from whereever Dim CodeLinks = JsonConvert.DeserializeObject(Of CodeLinkContainer)(jstr) Console.WriteLine(CodeLinks.meta.total) For Each Item In CodeLinks.codes Console.WriteLine(Item.title) Next 

Результат:

6
РАЗДЕЛ 1
РАЗДЕЛ 2
РАЗДЕЛ 3

  • Как решить class исключения COM Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))?
  • VB.NET progressbar backgroundworker
  • Несогласованность в поведении по принципу «один за другим» между разными типами значений
  • Обработчик исключений .NET Global в консольном приложении
  • Как отключить элемент в элементе управления listview в .net 3.5
  • Почему Словарь предпочтительнее Hashtable?
  • Запрос из двух таблиц в отчете
  • Есть ли способ программно определить, имеет ли файл шрифта определенный Unicode Glyph?
  • Зачем использовать String.Format?
  • У XSLT есть функция Split ()?
  • ByRef vs ByVal Clarification
  • Interesting Posts

    Windows 7/8 – восстановить диспетчер задач по умолчанию?

    В чем разница между шириной, внутренней шириной и внешней шириной, высотой, внутренним и верхним высотами в jQuery

    DBCP – validationQuery для разных баз данных

    Драйвер принтера Nt4.0 не совместим с Vista?

    Зачем использовать String.Equals над ==?

    Как изменить временную метку в dll или exe?

    Переменные среды для установки Java

    Инструмент командной строки Windows для преобразования MP3 в AIFF и обратно

    Как отображать изображение из URL на Android

    Могу ли я настроить KiTTY для отправки нажатия F7 вместо того, чтобы поднимать диалог печати при нажатии кнопки F7?

    org.glassfish.jersey.servlet.ServletContainer КлассNotFoundException

    Как использовать Percentage для макета Android?

    Почему scanf дважды запрашивает ввод, когда в конце строки формата есть новая строка?

    Объявление Spring Bean в контексте родительского контекста и дочернего контекста

    Проверка объекта на основе внешних факторов (т. Е. Уникальность хранилища данных)

    Давайте будем гением компьютера.