投稿者 魔界の仮面弁士  (社会人) 投稿日時 2021/4/16 10:34:47
> 読み込むJSONは以下の形式です。
Json2 のカンマの位置がおかしいので、構文エラーになりそうです。

> ただしgrouplistの要素数とそれに対応するグループのキー及び要素数は読込むJSONごとに異なります。
たとえば、animal が 3 要素で、flower が 7 要素といった非対称性もありえるのですね。
(実際、Json2 の human は要素数が他より少ない)

> 全てのグループの要素を一行目からセットするにはどのように記述すればよいでしょうか?
やり方は色々あると思いますが、例えばこんな感じにしてみるとか。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim jsonObj = JsonConvert.DeserializeObject(Of JObject)(TextBox1.Text)
    Dim jsonDataTable As New DataTable("JsonDataTable")
    For Each grp In jsonObj("list")("grouplist")
        Dim key = grp.ToString()
        Dim tbl As New DataTable()
        tbl.Columns.Add("ID"GetType(Long)).AutoIncrement = True
        tbl.Columns.Add(key)
        tbl.PrimaryKey = New DataColumn() {tbl.Columns(0)}
        For Each row In jsonObj("list")(key)
            Dim newRow = tbl.NewRow()
            newRow.SetField(Of String)(key, row.ToString())
            tbl.Rows.Add(newRow)
        Next
        jsonDataTable.Merge(tbl, False, MissingSchemaAction.AddWithKey)
    Next
    jsonDataTable.PrimaryKey = Nothing
    jsonDataTable.Columns.RemoveAt(0)
    jsonDataTable.AcceptChanges()
    DataGridView1.DataSource = jsonDataTable
End Sub