如何将字符串值属性序列化为字符串数组

时间:2015-12-13 08:36:38

标签: .net json vb.net json.net

我有一个班级:

Public Class ExtraInfo
   Property extratypes As String
End Class

我提交了一个表单,值assign是string,从表单提交的数据是字符串而不是数组:

extratypes = '1,2';

现在当我以json:

保存到数据库中时
Newtonsoft.Json.JsonConvert.SerializeObject(edited)

它在json中给我这个:

{"extratypes":"1,2"}

如何在保存之前将其操作为字符串数组,如下所示:

{"extratypes":["1","2"]}

2 个答案:

答案 0 :(得分:0)

在模型中使用数组:

Public Class ExtraInfo
   Property extratypes() As String
End Class

然后Split在将用户输入分配给此属性之前来自用户输入的值。

答案 1 :(得分:0)

您可以使用代理属性将字符串转换为数组或从数组转换字符串。使用[JsonIgnore][JsonProperty("extratypes")]代理装饰原始属性。如果方便的话,您可以将代理属性设为私有,只要它具有[JsonProperty]属性,Json.NET就会对其进行序列化:

Public Class ExtraInfo

    <JsonIgnore()> _
    Public Property extratypes As String

    <JsonProperty("extratypes")> _
    Private Property extratypesArray As String()
        Get
            If extratypes Is Nothing Then
                Return Nothing
            End If
            Return extraTypes.Split(","c)

        End Get

        Set(ByVal value As String())
            If value Is Nothing Then
                extratypes = Nothing
            Else
                extratypes = String.Join(","c, value)
            End If
        End Set
    End Property

End Class

示例fiddle

其他选项是编写自己的JsonConverter