DOBON.NETプログラミング道掲示板

No35401 の記事


■35401 / )  グリッド表示レコードをJSONに変換
□投稿者/ けい 一般人(1回)-(2023/05/01(Mon) 17:08:45)
  • アイコン環境/言語:[Windows10、VB.NET2022] 
    分類:[.NET] 

    お世話になります。

    DataGridView1に表示されているレコードを、
    JSON形式に変換したいと考えています。

    レコードはこちらの内容です(2列3行)。
    【商品(クラス名:Shohin)】
    商品C=10000
    商品名=商品A
    商品C=10001
    商品名=商品B
    商品C=10002
    商品名=商品C

    VB.NETでJSONを扱う方法に、
    元々VB.NETに備わっている機能を使う、
    JSON.NETを使う、
    の2種類があると思いますが、
    ここではセキュリティの面もあり、
    前者を使います。

    DataGridView1にレコードが表示されており、
    Button1を押すと、
    TextBox1にJSON変換データが表示されます。
    (商品データ以外の前後の部分はここでは割愛します。)

    コードは以下の通りです。

    Public Class Shohin
    Public Property 商品C As Integer
    Public Property 商品名 As String
    End Class

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim data() As Shohin
    ReDim data(2)
    Dim sw As New System.Runtime.Serialization.Json.DataContractJsonSerializer(GetType(Shohin))
    Dim ms As New MemoryStream()
    Dim output As String
    For i = 0 To 2
    data(i) = New Shohin
    data(i).商品C = DataGridView1.Rows(i).Cells(0).Value
    data(i).商品名 = DataGridView1.Rows(i).Cells(1).Value
    sw.WriteObject(ms, data(i))
    Next
    output = Encoding.UTF8.GetString(ms.ToArray())
    TextBox1.Text = output
    End Sub

    上記のコードを実行しますと、
    表示結果が、
    次のようになります。

    {"商品C":10000,"商品名":"商品A"}
    {"商品C":10001,"商品名":"商品B"}
    {"商品C":10002,"商品名":"商品C"}

    これですと、{}の間にカンマ(,)がついておりません。
    {"商品C":10000,"商品名":"商品A"}
    ,{"商品C":10001,"商品名":"商品B"}
    ,{"商品C":10002,"商品名":"商品C"}
    のようにしたいです。

    上記Forループ内で、
    1行目ではない場合は、
    sw.WriteObject(ms, ",")
    sw.WriteObject(ms, data(i))
    と記述しますと、
    表示結果が下記のようになってしまいます。

    {"商品C":10000,"商品名":"商品A"}
    ","{"商品C":10001,"商品名":"商品B"}
    ","{"商品C":10002,"商品名":"商品C"}

    いろいろ調べておりますが、
    わかりませんでした。

    まことにお手数と存じますが、
    どうぞよろしくお願いいたします。


違反を報告
返信 削除キー/


Mode/  Pass/


- Child Tree -