【问题标题】:Convert jArray to Object将 jArray 转换为对象
【发布时间】:2018-03-10 12:21:59
【问题描述】:

我有一个 JSON 数组,我想使用 json.net 将其转换为我的用户对象。

jArray1 = ["First","Last",12345]

Public Class User
    Public FirstName as String
    Public LastName as String
    Public UserId as Integer
End Class

我试过了

MyUser = jArray1.ToObject(Of User)

这给了我这个错误: 无法将当前 JSON 数组反序列化为“用户”类型,因为该类型需要 JSON 对象

我错过了什么?

错误信息还说:JsonArrayAttribute 也可以添加到类型中以强制它从 JSON 数组中反序列化。

但我不知道该怎么做。 :\

【问题讨论】:

    标签: .net json vb.net


    【解决方案1】:

    你有几个问题。一个是您必须反序列化为Users 的集合,而不是单个User

    您的下一个问题是您的数组只包含任意项。两个字符串和和整数。机制如何知道您想要 User.FirstName 属性中的字符串“First”等等?

    我不知道您是如何获得 JArray 的,但这基本上就是您想要的:

    Dim json = "[{ 'FirstName' : 'First', 'LastName' : 'Last', 'UserId' : 1234 }]"
    Dim jar = JArray.Parse(json)
    Dim usr = jar.ToObject(Of List(Of User))
    

    【讨论】:

    • 不幸的是我无法控制收到的 json。数组中的位置决定了属性。我可以手动将数组元素分配给对象,但我认为应该有一个更优雅的解决方案。
    • 可能有一个 JsonProperty 属性,你可以用它来装饰你的属性来帮助你,但老实说我对此表示怀疑。我认为你陷入了不优雅的境地。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    相关资源
    最近更新 更多