JSON.Net中JSON数组的类型是什么?

时间:2017-08-29 10:34:35

标签: arrays json vb.net json.net

我有以下json数据:

{
    "cgFinishing": {
        "a3colorfn": [{
                "type": "Cacah",
                "kode": "CCH"
            },
            {
                "type": "Cutting",
                "kode": "CUT"
            }
        ]
    }
}

我的JSON课程:

Public Class A3colorfn
    Public Property type As String
    Public Property kode As String
End Class

Public Class CgFinishing
    Public Property a3colorfn As A3colorfn()
End Class

Public Class CGSave
    Public Property cgFinishing As CgFinishing
End Class

我想在VB.NET中编写一个方法,使用JSON.NET从这个JSON数组中提取值。这段代码适合我:

Public Sub fillCBfromJson(ByVal cb As ComboBox, json As Object, Optional ByVal value As String = "", Optional display As String = "")
    ....
End Sub

但我想用更具体的内容替换json As Object,因为我想检索数组中的项目数(类似于Count或{ {1}},我无法使用GetLength类型

公开这些属性

供您参考,此代码适用于我......

Object

但我不知道把它当成一种方法。 任何帮助表示赞赏。

更多代码清单:

Dim count As Integer = jsonObj.cgFinishing.a3colorfn.GetLength(0)

我编写的方法不起作用..

Private Sub PublishDigital_Load(sender As Object, e As System.EventArgs) Handles MyBase.Load
    jsonPath = Application.StartupPath + "\Addons\CG_Tools\cgSave.json"
    jsonObj = JsonConvert.DeserializeObject(Of CGSave)(File.ReadAllText(jsonPath))
    initfinishingA3()
End Sub

Public Sub initfinishingA3() 'I want to make this as a method, so I'll only need to input the Array object as argument.
    Dim cbdata As Object = jsonObj.cgFinishing.a3colorfn '<- I want to put this line as argument instead
    Dim count As Integer = jsonObj.cgFinishing.a3colorfn.GetLength(0)

    Dim myCb As New List(Of CheckBox)

    For Each cur In cbdata
        Dim cb = New CheckBox()
        tb_finishinga3.Controls.Add(cb)
        Dim txt As JObject = JsonConvert.DeserializeObject(Of JObject)(JsonConvert.SerializeObject(cur))
        ...
        cb.Text = txt("type")
        ...
   Next
End Sub

然后我在这行试了一下......

Public Sub fillTabwithCB(ByVal cbdata As JArray, XOffset As Integer, YOffset As Integer, maxRow As Integer)
    Dim count As Integer = cbdata.Count

    Dim loopIndex As Integer
    Dim i As Integer = 0

    Dim myCb As New List(Of CheckBox)

    For Each cur In cbdata
        Dim cb = New CheckBox()
        tb_finishinga3.Controls.Add(cb)
        Dim txt As JObject = JsonConvert.DeserializeObject(Of JObject)(JsonConvert.SerializeObject(cur))
        .........
        cb.Text = txt("type")
        ..........
    Next
End Sub

它会产生以下错误:

  

类型的值#1; 1维数组   CG_FileManagement.A3colorfn&#39;无法转换为   &#39; Newtonsoft.Json.Linq.JArray&#39;

0 个答案:

没有答案