Newtonsoft JsonProperty订单属性的VB.NET语法

时间:2018-05-08 17:24:42

标签: vb.net json.net

我正在尝试设置各种JSON属性被序列化的顺序,我可以找到的所有示例都使用C#,如下所示:

[JsonProperty(Order = 1)]

但是我无法找到一种方法来在Visual Studio中接受的VB.NET中编写它 - 显而易见的:

<JsonProperty(Order = 1)>  

给出错误并且不会编译....(毫无疑问,这是一种格式化最后一行的方法,但是......)

因为我还需要为同一属性设置属性名称,例如

[JsonProperty(PropertyName = "CardCode")]

在c#中,如何使用JsonPropertyAttribute在vb.net中设置名称和顺序?

1 个答案:

答案 0 :(得分:1)

中描述了使用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