
还在为一长串 JSON 的字符串取数据而烦恼吗?还在为不会解析 JSON 数据而烦恼吗?还在为写多层大数据 JSON 实体类而烦恼吗?今天,你有幸看到这篇文章以上的问题都可以迎刃而解;
❝一、首先,出场的是我们的大杀器"JSON 快速转.NET 实体类"的小工具; ❞

本工具可以很好的把 JSON 字符串或者 JSON 字符串对象,快速转换成.NET 的实体类(VB.NET,Csharp),并支持一键拖拽加载 TXT 或者 JSON 文件中的数据,工具还支持.NET 实体类的自动内容注释,JSON 特性描述,JSON 实体类根类设置,实体类类型后缀修改等;支持自定义递归 JSON 的层数,再也不怕多层 JSON 的不好理解,该工具还支持 JSON 字符串的转义清洗和格式化没法字符串;
链接:https://pan.baidu.com/s/158EMsyFQI5sGbHSb8MyRAQ
提取码:vbee
❝二、使用转换器转换后的.NET 实体类结合 Newtonsoft.Json 对 JSON 字符串或 JSON 对象字符串进行序列化与反序列化 ❞
{
"状态": 0,
"信息": "查询成功",
"结果": [{
"姓名": "李四",
"年龄": 20,
"身高": 175,
"体重": "70KG",
"爱好": "瞟美女",
"喜欢美女类型": ["萝莉", "少妇"],
"喜欢的美女": [{
"姓名": "玲玲",
"身高": 165,
"体重": "48KG"
}, {
"姓名": "婷婷",
"身高": 170,
"体重": "45KG"
}]
}, {
"姓名": "王五",
"年龄": 22,
"身高": 185,
"体重": "60KG",
"爱好": "看隔壁美女",
"喜欢美女类型": ["御姐", "少妇"],
"喜欢的美女": [{
"姓名": "花花",
"身高": 165,
"体重": "48KG"
}, {
"姓名": "佳佳",
"身高": 170,
"体重": "45KG"
}]
}, {
"姓名": "张三",
"年龄": 18,
"身高": 165,
"体重": "66KG",
"爱好": "打球,瞟美女",
"喜欢美女类型": ["御姐", "少妇", "萝莉"],
"喜欢的美女": [{
"姓名": "咔咔",
"身高": 165,
"体重": "48KG"
}, {
"姓名": "蜜蜜",
"身高": 170,
"体重": "45KG"
}]
}]
}
"{
\"状态\": 0,
\"信息\": \"查询成功\",
\"结果\": [{
\"姓名\": \"李四\",
\"年龄\": 20,
\"身高\": 175,
\"体重\": \"70KG\",
\"爱好\": \"瞟美女\",
\"喜欢的美女\": [{
\"姓名\": \"玲玲\",
\"身高\": 165,
\"体重\": \"48KG\"
}, {
\"姓名\": \"婷婷\",
\"身高\": 170,
\"体重\": \"45KG\"
}],
\"喜欢美女类型\": [\"萝莉\", \"少妇\"]
}, {
\"姓名\": \"王五\",
\"年龄\": 22,
\"身高\": 185,
\"体重\": \"60KG\",
\"爱好\": \"看隔壁美女\",
\"喜欢美女类型\": [\"御姐\", \"少妇\"],
\"喜欢的美女\": [{
\"姓名\": \"花花\",
\"身高\": 165,
\"体重\": \"48KG\"
}, {
\"姓名\": \"佳佳\",
\"身高\": 170,
\"体重\": \"45KG\"
}]
}, {
\"姓名\": \"张三\",
\"年龄\": 18,
\"身高\": 165,
\"体重\": \"66KG\",
\"爱好\": \"打球,瞟美女\",
\"喜欢美女类型\": [\"御姐\", \"少妇\", \"萝莉\"],
\"喜欢的美女\": [{
\"姓名\": \"咔咔\",
\"身高\": 165,
\"体重\": \"48KG\"
}, {
\"姓名\": \"蜜蜜\",
\"身高\": 170,
\"体重\": \"45KG\"
}]
}]
}"
Public Class JsonObjectRoot
Public Property 状态 As Integer
Public Property 信息 As String
Public Property 结果 As List(Of 结果Type)
Public Class 结果Type
Public Property 姓名 As String
Public Property 年龄 As Integer
Public Property 身高 As Integer
Public Property 体重 As String
Public Property 爱好 As String
Public Property 喜欢美女类型 As List(Of String)
Public Property 喜欢的美女 As List(Of 喜欢的美女Type)
End Class
Public Class 喜欢的美女Type
Public Property 姓名 As String
Public Property 身高 As Integer
Public Property 体重 As String
End Class
End Class
''就一句话的事
Dim fobj As JsonObjectRoot = JsonConvert.DeserializeObject(Of JsonObjectRoot)(RichTextBox1.Text)
Debug.WriteLine(fobj.状态)
Debug.WriteLine(fobj.信息)
Dim 结果 As List(Of JsonObjectRoot.结果Type) = fobj.结果
For Each oj As JsonObjectRoot.结果Type In 结果
Debug.WriteLine($"基本信息:{oj.姓名}->{oj.年龄}->{oj.爱好}->{oj.体重}->{oj.身高}")
For Each lx As String In oj.喜欢美女类型
Debug.WriteLine($"{oj.姓名}喜欢的类型:{lx}")
Next
For Each mm As JsonObjectRoot.喜欢的美女Type In oj.喜欢的美女
Debug.WriteLine($"{oj.姓名}喜欢的美女MM基本信息:{mm.姓名}->{mm.体重}->{mm.身高}")
Next
Debug.WriteLine(vbCrLf)
Next
❝输出的结果 ❞
0
查询成功
基本信息:李四->20->瞟美女->70KG->175
李四喜欢的类型:萝莉
李四喜欢的类型:少妇
李四喜欢的美女MM基本信息:玲玲->48KG->165
李四喜欢的美女MM基本信息:婷婷->45KG->170
基本信息:王五->22->看隔壁美女->60KG->185
王五喜欢的类型:御姐
王五喜欢的类型:少妇
王五喜欢的美女MM基本信息:花花->48KG->165
王五喜欢的美女MM基本信息:佳佳->45KG->170
基本信息:张三->18->打球,瞟美女->66KG->165
张三喜欢的类型:御姐
张三喜欢的类型:少妇
张三喜欢的类型:萝莉
张三喜欢的美女MM基本信息:咔咔->48KG->165
张三喜欢的美女MM基本信息:蜜蜜->45KG->170
Imports Newtonsoft.Json
Public Class Formx
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim fobj As JsonObjectRoot = JsonConvert.DeserializeObject(Of JsonObjectRoot)(RichTextBox1.Text)
Debug.WriteLine(fobj.状态)
Debug.WriteLine(fobj.信息)
Dim 结果 As List(Of JsonObjectRoot.结果Type) = fobj.结果
For Each oj As JsonObjectRoot.结果Type In 结果
Debug.WriteLine($"基本信息:{oj.姓名}->{oj.年龄}->{oj.爱好}->{oj.体重}->{oj.身高}")
For Each lx As String In oj.喜欢美女类型
Debug.WriteLine($"{oj.姓名}喜欢的类型:{lx}")
Next
For Each mm As JsonObjectRoot.喜欢的美女Type In oj.喜欢的美女
Debug.WriteLine($"{oj.姓名}喜欢的美女MM基本信息:{mm.姓名}->{mm.体重}->{mm.身高}")
Next
Debug.WriteLine(vbCrLf)
Next
End Sub
End Class
Public Class JsonObjectRoot
Public Property 状态 As Integer
Public Property 信息 As String
Public Property 结果 As List(Of 结果Type)
Public Class 结果Type
Public Property 姓名 As String
Public Property 年龄 As Integer
Public Property 身高 As Integer
Public Property 体重 As String
Public Property 爱好 As String
Public Property 喜欢美女类型 As List(Of String)
Public Property 喜欢的美女 As List(Of 喜欢的美女Type)
End Class
Public Class 喜欢的美女Type
Public Property 姓名 As String
Public Property 身高 As Integer
Public Property 体重 As String
End Class
End Class
且看具体代码(所见即所得)
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Dim newxx As New JsonObjectRoot With {
.状态 = 0,
.信息 = "对象序列化成实体类",
.结果 = New List(Of JsonObjectRoot.结果Type) From {
New JsonObjectRoot.结果Type With {
.姓名 = "A男",
.体重 = "70kg",
.年龄 = 50,
.爱好 = "无",
.身高 = 160,
.喜欢美女类型 = New List(Of String) From {
"少妇",
"大妈"
},
.喜欢的美女 = New List(Of JsonObjectRoot.喜欢的美女Type) From {
New JsonObjectRoot.喜欢的美女Type With {
.姓名 = "A女",
.体重 = "80KG",
.身高 = 150
}
}
},
New JsonObjectRoot.结果Type With {
.姓名 = "B男",
.体重 = "80kg",
.年龄 = 45,
.爱好 = "DFJ",
.身高 = 170,
.喜欢美女类型 = New List(Of String) From {
"少妇",
"萝莉"
},
.喜欢的美女 = New List(Of JsonObjectRoot.喜欢的美女Type) From {
New JsonObjectRoot.喜欢的美女Type With {
.姓名 = "B女",
.体重 = "50KG",
.身高 = 160
}
}
}
}
}
Dim FSTR As String = JsonConvert.SerializeObject(newxx)
Debug.WriteLine(FormatJsonString(FSTR))
End Sub
''' <summary>
''' 格式化JSON
''' </summary>
''' <param name="JsonStr"></param>
''' <returns></returns>
Public Function FormatJsonString(JsonStr As String) As String
Try
Dim Jser As New JsonSerializer
Dim Trd As TextReader = New StringReader(JsonStr)
Dim Jtrd As New JsonTextReader(Trd)
Dim jobj As Object = Jser.Deserialize(Jtrd)
If jobj IsNot Nothing Then
Dim Sw As New StringWriter
Dim Jtw As New JsonTextWriter(Sw) With {
.Formatting = Formatting.Indented,
.Indentation = 4,
.IndentChar = " "c
}
Jser.Serialize(Jtw, jobj)
Return Sw.ToString
Else
Return JsonStr
End If
Catch ex As Exception
Return JsonStr
End Try
End Function
❝输出的结果 ❞
{
"状态": 0,
"信息": "对象序列化成实体类",
"结果": [
{
"姓名": "A男",
"年龄": 50,
"身高": 160,
"体重": "70kg",
"爱好": "无",
"喜欢美女类型": [
"少妇",
"大妈"
],
"喜欢的美女": [
{
"姓名": "A女",
"身高": 150,
"体重": "80KG"
}
]
},
{
"姓名": "B男",
"年龄": 45,
"身高": 170,
"体重": "80kg",
"爱好": "DFJ",
"喜欢美女类型": [
"少妇",
"萝莉"
],
"喜欢的美女": [
{
"姓名": "B女",
"身高": 160,
"体重": "50KG"
}
]
}
]
}
❝三、 好啦,今天就演示到这里吧! ❞
具体 JSON 序列化与反序列化测试项目见以下链接
链接:https://pan.baidu.com/s/1Y-MxtXCTutxKeMcKa0-03A
提取码:vbee
❝四、联系方式 ❞
微信:vbee_club