В настоящее время я пишу API, который принимает объекты из веб-службы, обрабатывающей его в VB.net, используя библиотеку Newsoft JSON .NET.Newsoft JSON .NET Deserializing для объекта с частными свойствами в VB.net
Я десериализую массив JSON, названный Транспортными средствами, в список транспортных средств.
Вот важные фрагменты кода:
Public Class VehicleList
Public Vehicles() As Vehicle
End Class
Public Class Vehicle
Public Property licence_plate_number As String
End Class
Здесь есть веб-клиент, который захватывает JSON и поместить его в объекты.
Public Class dcVehicles
Private Property _Vehicles As VehicleList
Public ReadOnly Property Vehicle As Vehicle()
Get
Return _Vehicles.Vehicles
End Get
End Property
Public Sub Refresh()
_Vehicles = JsonConvert.DeserializeObject(Of VehicleList)(wcReply, jsSettings)
End Sub
End Class
Есть немного больше (сокращенно). Итак, все работает по назначению, json net создает массив автомобилей.
Я пытаюсь достичь этого с помощью свойств класса автомобиля как частного и только для чтения, приложения, использующие api, не смогут их установить.
Проблема я попытался изменить общественную собственность в классе транспортного средства, чтобы сохранить имущество частного и позволить только для чтения, как показано ниже:
Public Class Vehicle
Friend Property licence_plate_number As String
Public ReadOnly Property RegistrationNumber As String
Get
Return licence_plate_number
End Get
End Property
End Class
Проблема, которую я тогда получаю, что JSON.net не в состоянии заселяют транспортные средства. Все 3 класса находятся в одном пространстве имен. Итак, я попробовал licence_plate_number с модификатором уровня Friend/private access, но Json net не смог заполнить объект.
Единственный способ сохранить его как общедоступный.
Есть ли у кого-нибудь идеи для работы? Или я пропустил что-то простое?
Благодаря
Можете ли вы предоставить образец json? – djv
В любом случае, вы не можете напрямую сериализовать закрытых членов. Однако есть решения, см. (C#) http://stackoverflow.com/questions/10189471/json-net-serialize-private-members-and-not-readonly-properties, http://stackoverflow.com/questions/32008869/json-net-serialize-specific-private-field – djv
Что вы хотите увидеть в JSON для 'Vehicle'? 'RegistrationNumber' или' licence_plate_number'? – dbc