我正在尝试设置各种JSON属性被序列化的顺序,我可以找到的所有示例都使用C#,如下所示:
[JsonProperty(Order = 1)]
但是我无法找到一种方法来在Visual Studio中接受的VB.NET中编写它 - 显而易见的:
<JsonProperty(Order = 1)>
给出错误并且不会编译....(毫无疑问,这是一种格式化最后一行的方法,但是......)
因为我还需要为同一属性设置属性名称,例如
[JsonProperty(PropertyName = "CardCode")]
在c#中,如何使用JsonPropertyAttribute
在vb.net中设置名称和顺序?
答案 0 :(得分:1)
vb.net中描述了使用Attributes overview (Visual Basic): Attribute Parameters中的参数应用属性的语法。
属性参数
许多属性都有参数,可以是位置,未命名或命名。任何位置参数必须按特定顺序指定,不能省略;命名参数是可选的,可以按任何顺序指定。首先指定位置参数。例如,这三个属性是等价的:
<DllImport("user32.dll")> <DllImport("user32.dll", SetLastError:=False, ExactSpelling:=False)> <DllImport("user32.dll", ExactSpelling:=False, SetLastError:=False)>
因此,如果您想将JsonPropertyAttribute
应用于某个属性并同时设置名称和顺序,则必须执行以下操作:
Public Class Card
<JsonProperty(PropertyName:="CardName", Order:=2)>
Public Property Name As String
<JsonProperty(PropertyName:="CardDescription", Order:=3, _
NullValueHandling := NullValueHandling.Ignore, DefaultValueHandling := DefaultValueHandling.IgnoreAndPopulate)>
<System.ComponentModel.DefaultValue("")>
Public Property Description As String
<JsonProperty(PropertyName:="CardCode", Order:=1)>
Public Property Code As String
End Class
注意:
如AllowMultiple = false
中的设置source code所示,只有JsonPropertyAttribute
的一个实例可以应用于给定的成员或参数:
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Parameter, AllowMultiple = false)]
public sealed class JsonPropertyAttribute : Attribute
{
// Contents of the type omitted
}
因此,必须在该属性中初始化所有必需的JsonPropertyAttribute
设置。
行继续符_
可用于中断多行的属性设置。但是,属性可以应用在紧邻属性之前的行上,因此在这种情况下不必使用它。
根据JSON standard,JSON对象是一组无序的名称/值对,因此通常不需要指定顺序。
< / LI>示例VB.NET小提琴here。