【发布时间】:2017-03-02 15:14:33
【问题描述】:
我目前正在编写一个 API,它从使用 Newsoft JSON .NET 库在 VB.net 中处理它的 Web 服务中获取对象。
我正在将名为 Vehicles 的 JSON 数组反序列化为车辆列表。
这里是重要的代码sn-ps:
Public Class VehicleList
Public Vehicles() As Vehicle
End Class
Public Class Vehicle
Public Property licence_plate_number As String
End Class
这里我们有一个 Web 客户端,它抓取 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 个类都在同一个命名空间中。 所以我尝试了使用 Friend/private 访问级别修饰符的 licence_plate_number,但 Json 网络仍然无法填充该对象。
唯一的办法就是保持公开。
有人有解决方法的想法吗?还是我错过了一些简单的东西?
谢谢
【问题讨论】:
-
你能提供一个json的样本吗?
-
反正不能直接序列化私有成员。但是有一些解决方案,请参阅 (C#) stackoverflow.com/questions/10189471/…, stackoverflow.com/questions/32008869/…
-
你想在
Vehicle的 JSON 中看到什么?RegistrationNumber或licence_plate_number? -
感谢您的帮助,我可以添加一个json的示例。 json 有 licence_plate_number 但我想将它存储在只读属性 RegistrationNumber 中。
标签: vb.net serialization json.net access-modifiers