VB.NET에서 DataSet을 JSON에서 클래스로 변환
【C#】 【Visual Studio】 Visual Studio에서 JSON에서 클래스 생성
ㅡtp // 하테나아 ry. jp/엔트리/2015/07/10/210000
이것은 DataSet을 JSON으로 변환하고 거기에서 클래스를 생성하는 것입니다.
DataSet → JSON → 클래스
클래스 → JSON → DataSet
와 같은 상호 변환이 가능하게 되지 않을까 생각해 보았습니다.
환경
Windows 7 Professional SP1 64bit
Visual Studio 2017 커뮤니티
Newtonsoft.Json 10.0.2 ※ NuGet으로 솔루션에 패키지를 추가해 주세요
프로젝트 만들기
이번에는 Visual Basic의 Windows Forms 응용 프로그램에서 만들었습니다.
양식에 버튼과 데이터 그리드를 배치합니다.
변환할 데이터 세트를 만듭니다.
각 컬럼의 유형은 다음과 같습니다.
DataColumn1: Integer
DataColumn2: String
DataColumn3: Datetime
DataSet을 JSON으로 변환
버튼 클릭 이벤트로 DataSet을 JSON으로 변환하는 프로그램을 만듭니다.
DataTable을 직렬화하여 JSON으로 변환합니다.
Form.vbImports Newtonsoft.Json
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
''変換元データセットを初期化
Dim srcds As New DataSet1
For i As Integer = 1 To 5
Dim row As DataSet1.DataTable1Row = srcds.DataTable1.NewDataTable1Row
row.DataColumn1 = i.ToString
row.DataColumn2 = "データ" + i.ToString
row.DataColumn3 = Date.Now
srcds.DataTable1.AddDataTable1Row(row)
Next
''データテーブルをJSONに変換 ※DataTableをシリアライズする
Dim dataset_json As String = JsonConvert.SerializeObject(srcds.DataTable1, Formatting.Indented)
Debug.WriteLine(dataset_json)
End Sub
End Class
이대로 실행하면 출력(디버그)에 JSON이 출력됩니다.
출력 (디버그)[
{
"DataColumn1": 1,
"DataColumn2": "データ1",
"DataColumn3": "2017-06-12T21:55:14.0343035"
},
{
"DataColumn1": 2,
"DataColumn2": "データ2",
"DataColumn3": "2017-06-12T21:55:14.0373039"
},
{
"DataColumn1": 3,
"DataColumn2": "データ3",
"DataColumn3": "2017-06-12T21:55:14.0373039"
},
{
"DataColumn1": 4,
"DataColumn2": "データ4",
"DataColumn3": "2017-06-12T21:55:14.0373039"
},
{
"DataColumn1": 5,
"DataColumn2": "データ5",
"DataColumn3": "2017-06-12T21:55:14.0373039"
}
]
JSON에서 클래스 만들기
출력된 JSON을 복사하여 형식을 지정하고 붙여넣기에서 "JSON을 클래스로 붙여넣기"를 선택하면 다음과 같은 클래스가 작성된다.
Class1.vbPublic Class Rootobject
Public Property Property1() As Class1
End Class
Public Class Class1
Public Property DataColumn1 As Integer
Public Property DataColumn2 As String
Public Property DataColumn3 As Date
End Class
이대로 사용하기 어렵기 때문에 다음과 같이 변경했습니다.
Rootobject → DataTable1
Property1() As Class1 → Rows As DataTable1Row() ※괄호를 형의 뒤에
Class1 → DataTable1Row
네임스페이스 모델 추가
Class1.vbNamespace Model
Public Class DataTable1
Public Property Rows As DataTable1Row()
End Class
Public Class DataTable1Row
Public Property DataColumn1 As Integer
Public Property DataColumn2 As String
Public Property DataColumn3 As Date
End Class
End Namespace
JSON에서 클래스로 변환
만든 버튼 클릭 이벤트에 다음 코드를 추가합니다.
model 변수가 위의 클래스가 됩니다. JSON을 List 객체로 deserialize하고 저장합니다.
Form.vb ''JSONをクラスに変換 ※クラスは出力したJSONを貼り付けて作成し、Listにデシリアライズする
Dim model As New Model.DataTable1
Dim rows As List(Of Model.DataTable1Row) = JsonConvert.DeserializeObject(Of List(Of Model.DataTable1Row))(dataset_json)
model.Rows = rows.ToArray
여기까지 DataSet→JSON→클래스까지 변환할 수 있었습니다.
클래스에서 DataSet으로 되돌리기
클래스 (model.Rows)를 직렬화하여 JSON으로 변환하고 JSON을 DataTable로 변환합니다.
결국 다음과 같은 프로그램이 될 것입니다.
Form.vbImports Newtonsoft.Json
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
''変換元データセットを初期化
Dim srcds As New DataSet1
For i As Integer = 1 To 5
Dim row As DataSet1.DataTable1Row = srcds.DataTable1.NewDataTable1Row
row.DataColumn1 = i.ToString
row.DataColumn2 = "データ" + i.ToString
row.DataColumn3 = Date.Now
srcds.DataTable1.AddDataTable1Row(row)
Next
''データテーブルをJSONに変換 ※DataTableをシリアライズする
Dim dataset_json As String = JsonConvert.SerializeObject(srcds.DataTable1, Formatting.Indented)
Debug.WriteLine(dataset_json)
''JSONをクラスに変換 ※クラスは出力したJSONを貼り付けて作成し、Listにデシリアライズする
Dim model As New Model.DataTable1
Dim rows As List(Of Model.DataTable1Row) = JsonConvert.DeserializeObject(Of List(Of Model.DataTable1Row))(dataset_json)
model.Rows = rows.ToArray
''クラスをJSONに変換 ※配列(Rows)をシリアライズする
Dim model_json As String = JsonConvert.SerializeObject(model.Rows, Formatting.Indented)
Debug.WriteLine(model_json)
''JSONをデータテーブルに変換 ※DataTableにデシリアライズする
Dim dt As DataSet1.DataTable1DataTable = JsonConvert.DeserializeObject(Of DataSet1.DataTable1DataTable)(model_json)
''変換先データセットをグリッドに表示 ※データテーブルの内容をコピー
Dim destds As New DataSet1
For Each row As DataSet1.DataTable1Row In dt.Rows
destds.DataTable1.ImportRow(row)
Next
DataGridView1.DataSource = destds.DataTable1
End Sub
End Class
이제 클래스 → JSON → DataSet으로 변환 할 수있었습니다.
실행
실행하고 그리드에 데이터가 표시되면 완성입니다.
디버거에서 정지하면서 동작을 확인하면 알기 쉽다고 생각합니다.
Reference
이 문제에 관하여(VB.NET에서 DataSet을 JSON에서 클래스로 변환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/akabei/items/983d0587a0f267cad949
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이번에는 Visual Basic의 Windows Forms 응용 프로그램에서 만들었습니다.
양식에 버튼과 데이터 그리드를 배치합니다.
변환할 데이터 세트를 만듭니다.
각 컬럼의 유형은 다음과 같습니다.
DataColumn1: Integer
DataColumn2: String
DataColumn3: Datetime
DataSet을 JSON으로 변환
버튼 클릭 이벤트로 DataSet을 JSON으로 변환하는 프로그램을 만듭니다.
DataTable을 직렬화하여 JSON으로 변환합니다.
Form.vbImports Newtonsoft.Json
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
''変換元データセットを初期化
Dim srcds As New DataSet1
For i As Integer = 1 To 5
Dim row As DataSet1.DataTable1Row = srcds.DataTable1.NewDataTable1Row
row.DataColumn1 = i.ToString
row.DataColumn2 = "データ" + i.ToString
row.DataColumn3 = Date.Now
srcds.DataTable1.AddDataTable1Row(row)
Next
''データテーブルをJSONに変換 ※DataTableをシリアライズする
Dim dataset_json As String = JsonConvert.SerializeObject(srcds.DataTable1, Formatting.Indented)
Debug.WriteLine(dataset_json)
End Sub
End Class
이대로 실행하면 출력(디버그)에 JSON이 출력됩니다.
출력 (디버그)[
{
"DataColumn1": 1,
"DataColumn2": "データ1",
"DataColumn3": "2017-06-12T21:55:14.0343035"
},
{
"DataColumn1": 2,
"DataColumn2": "データ2",
"DataColumn3": "2017-06-12T21:55:14.0373039"
},
{
"DataColumn1": 3,
"DataColumn2": "データ3",
"DataColumn3": "2017-06-12T21:55:14.0373039"
},
{
"DataColumn1": 4,
"DataColumn2": "データ4",
"DataColumn3": "2017-06-12T21:55:14.0373039"
},
{
"DataColumn1": 5,
"DataColumn2": "データ5",
"DataColumn3": "2017-06-12T21:55:14.0373039"
}
]
JSON에서 클래스 만들기
출력된 JSON을 복사하여 형식을 지정하고 붙여넣기에서 "JSON을 클래스로 붙여넣기"를 선택하면 다음과 같은 클래스가 작성된다.
Class1.vbPublic Class Rootobject
Public Property Property1() As Class1
End Class
Public Class Class1
Public Property DataColumn1 As Integer
Public Property DataColumn2 As String
Public Property DataColumn3 As Date
End Class
이대로 사용하기 어렵기 때문에 다음과 같이 변경했습니다.
Rootobject → DataTable1
Property1() As Class1 → Rows As DataTable1Row() ※괄호를 형의 뒤에
Class1 → DataTable1Row
네임스페이스 모델 추가
Class1.vbNamespace Model
Public Class DataTable1
Public Property Rows As DataTable1Row()
End Class
Public Class DataTable1Row
Public Property DataColumn1 As Integer
Public Property DataColumn2 As String
Public Property DataColumn3 As Date
End Class
End Namespace
JSON에서 클래스로 변환
만든 버튼 클릭 이벤트에 다음 코드를 추가합니다.
model 변수가 위의 클래스가 됩니다. JSON을 List 객체로 deserialize하고 저장합니다.
Form.vb ''JSONをクラスに変換 ※クラスは出力したJSONを貼り付けて作成し、Listにデシリアライズする
Dim model As New Model.DataTable1
Dim rows As List(Of Model.DataTable1Row) = JsonConvert.DeserializeObject(Of List(Of Model.DataTable1Row))(dataset_json)
model.Rows = rows.ToArray
여기까지 DataSet→JSON→클래스까지 변환할 수 있었습니다.
클래스에서 DataSet으로 되돌리기
클래스 (model.Rows)를 직렬화하여 JSON으로 변환하고 JSON을 DataTable로 변환합니다.
결국 다음과 같은 프로그램이 될 것입니다.
Form.vbImports Newtonsoft.Json
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
''変換元データセットを初期化
Dim srcds As New DataSet1
For i As Integer = 1 To 5
Dim row As DataSet1.DataTable1Row = srcds.DataTable1.NewDataTable1Row
row.DataColumn1 = i.ToString
row.DataColumn2 = "データ" + i.ToString
row.DataColumn3 = Date.Now
srcds.DataTable1.AddDataTable1Row(row)
Next
''データテーブルをJSONに変換 ※DataTableをシリアライズする
Dim dataset_json As String = JsonConvert.SerializeObject(srcds.DataTable1, Formatting.Indented)
Debug.WriteLine(dataset_json)
''JSONをクラスに変換 ※クラスは出力したJSONを貼り付けて作成し、Listにデシリアライズする
Dim model As New Model.DataTable1
Dim rows As List(Of Model.DataTable1Row) = JsonConvert.DeserializeObject(Of List(Of Model.DataTable1Row))(dataset_json)
model.Rows = rows.ToArray
''クラスをJSONに変換 ※配列(Rows)をシリアライズする
Dim model_json As String = JsonConvert.SerializeObject(model.Rows, Formatting.Indented)
Debug.WriteLine(model_json)
''JSONをデータテーブルに変換 ※DataTableにデシリアライズする
Dim dt As DataSet1.DataTable1DataTable = JsonConvert.DeserializeObject(Of DataSet1.DataTable1DataTable)(model_json)
''変換先データセットをグリッドに表示 ※データテーブルの内容をコピー
Dim destds As New DataSet1
For Each row As DataSet1.DataTable1Row In dt.Rows
destds.DataTable1.ImportRow(row)
Next
DataGridView1.DataSource = destds.DataTable1
End Sub
End Class
이제 클래스 → JSON → DataSet으로 변환 할 수있었습니다.
실행
실행하고 그리드에 데이터가 표시되면 완성입니다.
디버거에서 정지하면서 동작을 확인하면 알기 쉽다고 생각합니다.
Reference
이 문제에 관하여(VB.NET에서 DataSet을 JSON에서 클래스로 변환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/akabei/items/983d0587a0f267cad949
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Imports Newtonsoft.Json
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
''変換元データセットを初期化
Dim srcds As New DataSet1
For i As Integer = 1 To 5
Dim row As DataSet1.DataTable1Row = srcds.DataTable1.NewDataTable1Row
row.DataColumn1 = i.ToString
row.DataColumn2 = "データ" + i.ToString
row.DataColumn3 = Date.Now
srcds.DataTable1.AddDataTable1Row(row)
Next
''データテーブルをJSONに変換 ※DataTableをシリアライズする
Dim dataset_json As String = JsonConvert.SerializeObject(srcds.DataTable1, Formatting.Indented)
Debug.WriteLine(dataset_json)
End Sub
End Class
[
{
"DataColumn1": 1,
"DataColumn2": "データ1",
"DataColumn3": "2017-06-12T21:55:14.0343035"
},
{
"DataColumn1": 2,
"DataColumn2": "データ2",
"DataColumn3": "2017-06-12T21:55:14.0373039"
},
{
"DataColumn1": 3,
"DataColumn2": "データ3",
"DataColumn3": "2017-06-12T21:55:14.0373039"
},
{
"DataColumn1": 4,
"DataColumn2": "データ4",
"DataColumn3": "2017-06-12T21:55:14.0373039"
},
{
"DataColumn1": 5,
"DataColumn2": "データ5",
"DataColumn3": "2017-06-12T21:55:14.0373039"
}
]
출력된 JSON을 복사하여 형식을 지정하고 붙여넣기에서 "JSON을 클래스로 붙여넣기"를 선택하면 다음과 같은 클래스가 작성된다.
Class1.vb
Public Class Rootobject
Public Property Property1() As Class1
End Class
Public Class Class1
Public Property DataColumn1 As Integer
Public Property DataColumn2 As String
Public Property DataColumn3 As Date
End Class
이대로 사용하기 어렵기 때문에 다음과 같이 변경했습니다.
Rootobject → DataTable1
Property1() As Class1 → Rows As DataTable1Row() ※괄호를 형의 뒤에
Class1 → DataTable1Row
네임스페이스 모델 추가
Class1.vb
Namespace Model
Public Class DataTable1
Public Property Rows As DataTable1Row()
End Class
Public Class DataTable1Row
Public Property DataColumn1 As Integer
Public Property DataColumn2 As String
Public Property DataColumn3 As Date
End Class
End Namespace
JSON에서 클래스로 변환
만든 버튼 클릭 이벤트에 다음 코드를 추가합니다.
model 변수가 위의 클래스가 됩니다. JSON을 List 객체로 deserialize하고 저장합니다.
Form.vb ''JSONをクラスに変換 ※クラスは出力したJSONを貼り付けて作成し、Listにデシリアライズする
Dim model As New Model.DataTable1
Dim rows As List(Of Model.DataTable1Row) = JsonConvert.DeserializeObject(Of List(Of Model.DataTable1Row))(dataset_json)
model.Rows = rows.ToArray
여기까지 DataSet→JSON→클래스까지 변환할 수 있었습니다.
클래스에서 DataSet으로 되돌리기
클래스 (model.Rows)를 직렬화하여 JSON으로 변환하고 JSON을 DataTable로 변환합니다.
결국 다음과 같은 프로그램이 될 것입니다.
Form.vbImports Newtonsoft.Json
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
''変換元データセットを初期化
Dim srcds As New DataSet1
For i As Integer = 1 To 5
Dim row As DataSet1.DataTable1Row = srcds.DataTable1.NewDataTable1Row
row.DataColumn1 = i.ToString
row.DataColumn2 = "データ" + i.ToString
row.DataColumn3 = Date.Now
srcds.DataTable1.AddDataTable1Row(row)
Next
''データテーブルをJSONに変換 ※DataTableをシリアライズする
Dim dataset_json As String = JsonConvert.SerializeObject(srcds.DataTable1, Formatting.Indented)
Debug.WriteLine(dataset_json)
''JSONをクラスに変換 ※クラスは出力したJSONを貼り付けて作成し、Listにデシリアライズする
Dim model As New Model.DataTable1
Dim rows As List(Of Model.DataTable1Row) = JsonConvert.DeserializeObject(Of List(Of Model.DataTable1Row))(dataset_json)
model.Rows = rows.ToArray
''クラスをJSONに変換 ※配列(Rows)をシリアライズする
Dim model_json As String = JsonConvert.SerializeObject(model.Rows, Formatting.Indented)
Debug.WriteLine(model_json)
''JSONをデータテーブルに変換 ※DataTableにデシリアライズする
Dim dt As DataSet1.DataTable1DataTable = JsonConvert.DeserializeObject(Of DataSet1.DataTable1DataTable)(model_json)
''変換先データセットをグリッドに表示 ※データテーブルの内容をコピー
Dim destds As New DataSet1
For Each row As DataSet1.DataTable1Row In dt.Rows
destds.DataTable1.ImportRow(row)
Next
DataGridView1.DataSource = destds.DataTable1
End Sub
End Class
이제 클래스 → JSON → DataSet으로 변환 할 수있었습니다.
실행
실행하고 그리드에 데이터가 표시되면 완성입니다.
디버거에서 정지하면서 동작을 확인하면 알기 쉽다고 생각합니다.
Reference
이 문제에 관하여(VB.NET에서 DataSet을 JSON에서 클래스로 변환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/akabei/items/983d0587a0f267cad949
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
''JSONをクラスに変換 ※クラスは出力したJSONを貼り付けて作成し、Listにデシリアライズする
Dim model As New Model.DataTable1
Dim rows As List(Of Model.DataTable1Row) = JsonConvert.DeserializeObject(Of List(Of Model.DataTable1Row))(dataset_json)
model.Rows = rows.ToArray
클래스 (model.Rows)를 직렬화하여 JSON으로 변환하고 JSON을 DataTable로 변환합니다.
결국 다음과 같은 프로그램이 될 것입니다.
Form.vb
Imports Newtonsoft.Json
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
''変換元データセットを初期化
Dim srcds As New DataSet1
For i As Integer = 1 To 5
Dim row As DataSet1.DataTable1Row = srcds.DataTable1.NewDataTable1Row
row.DataColumn1 = i.ToString
row.DataColumn2 = "データ" + i.ToString
row.DataColumn3 = Date.Now
srcds.DataTable1.AddDataTable1Row(row)
Next
''データテーブルをJSONに変換 ※DataTableをシリアライズする
Dim dataset_json As String = JsonConvert.SerializeObject(srcds.DataTable1, Formatting.Indented)
Debug.WriteLine(dataset_json)
''JSONをクラスに変換 ※クラスは出力したJSONを貼り付けて作成し、Listにデシリアライズする
Dim model As New Model.DataTable1
Dim rows As List(Of Model.DataTable1Row) = JsonConvert.DeserializeObject(Of List(Of Model.DataTable1Row))(dataset_json)
model.Rows = rows.ToArray
''クラスをJSONに変換 ※配列(Rows)をシリアライズする
Dim model_json As String = JsonConvert.SerializeObject(model.Rows, Formatting.Indented)
Debug.WriteLine(model_json)
''JSONをデータテーブルに変換 ※DataTableにデシリアライズする
Dim dt As DataSet1.DataTable1DataTable = JsonConvert.DeserializeObject(Of DataSet1.DataTable1DataTable)(model_json)
''変換先データセットをグリッドに表示 ※データテーブルの内容をコピー
Dim destds As New DataSet1
For Each row As DataSet1.DataTable1Row In dt.Rows
destds.DataTable1.ImportRow(row)
Next
DataGridView1.DataSource = destds.DataTable1
End Sub
End Class
이제 클래스 → JSON → DataSet으로 변환 할 수있었습니다.
실행
실행하고 그리드에 데이터가 표시되면 완성입니다.
디버거에서 정지하면서 동작을 확인하면 알기 쉽다고 생각합니다.
Reference
이 문제에 관하여(VB.NET에서 DataSet을 JSON에서 클래스로 변환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/akabei/items/983d0587a0f267cad949
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(VB.NET에서 DataSet을 JSON에서 클래스로 변환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/akabei/items/983d0587a0f267cad949텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)