Я сделал это, чтобы преобразовать форматированную строку JSON в объект VB.NET.Чтение строки JSON для VB .NET Object
Я не могу найти, почему это не сработает!
jsonSettingsWrapper.vb
Public Class jsonSettingsWrapper
'Public setting As jsonSettings
Public Property setting As jsonSettings
Get
Return m_setting
End Get
Set(value As jsonSettings)
m_setting = value
End Set
End Property
Private m_setting As jsonSettings
End Class
Public Class jsonSettings
Public Property root_folder_path As String
Get
Return m_root_folder_path
End Get
Set(value As String)
m_root_folder_path = value
End Set
End Property
Private m_root_folder_path As String
Public Property ignored_files As String()
Get
Return m_ignored_files
End Get
Set(value As String())
m_ignored_files = value
End Set
End Property
Private m_ignored_files As String()
Public Property last_pack_date As String
Get
Return m_last_pack_date
End Get
Set(value As String)
m_last_pack_date = value
End Set
End Property
Private m_last_pack_date As String
Public Property last_push_date As String
Get
Return m_last_push_date
End Get
Set(value As String)
m_last_push_date = value
End Set
End Property
Private m_last_push_date As String
Public Property no_of_packs As Integer
Get
Return m_no_of_packs
End Get
Set(value As Integer)
m_no_of_packs = value
End Set
End Property
Private m_no_of_packs As Integer
Public Property packs_array As packs()
Get
Return m_packs_array
End Get
Set(value As packs())
m_packs_array = value
End Set
End Property
Private m_packs_array As packs()
End Class
Public Class packs
Public Property filename As String
Get
Return m_filename
End Get
Set(value As String)
m_filename = value
End Set
End Property
Private m_filename As String
Public Property pack_date As String
Get
Return m_pack_date
End Get
Set(value As String)
m_pack_date = value
End Set
End Property
Private m_pack_date As String
End Class
Form1.vb
Imports System.Web.Script.Serialization
Imports WindowsApplication1.jsonSettingsWrapper
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim ser As New JavaScriptSerializer
Dim settingsString As String = IO.File.ReadAllText("settings.json")
MsgBox(settingsString)
Dim settings = ser.Deserialize(Of jsonSettingsWrapper)(settingsString)
MsgBox(settings.setting) 'empty
MsgBox(settings.setting.root_folder_path)
'^^ Error: A first chance exception of type 'System.NullReferenceException' occurred in FilesSync.exe
End Sub
Как уже упоминалось в комментариях к коду, ошибка происходит, когда это пытаются получить доступ к некоторым из его стоимости. Может ли кто-нибудь рассказать о том, почему это происходит. Где я делаю это неправильно?
EDIT: JSON я использовал:
{"settings": {
"root_folder_path": "ab",
"ignored_files": [
"cd",
"ef"
],
"last_pack_date": "12",
"last_push_date": "21",
"no_of_packs": 3,
"packs_array": [
{
"filename": "aa",
"pack_date": "21"
}
]
}}
Я бы рекомендовал использовать библиотеку для разбора JSON, например JSON.NET, если у вас нет конкретной необходимости сделать это самостоятельно. –
Вы должны показать пример строки JSON –
@the_lotus: Отредактировано – cipher