
引用周老师的话:
JToken是一个基类,它不仅可以用来表示JObject(json对象),也可以表示JArray(json数组)、JProperty(json属性)和JValue(json原生值)。
当无法确定客户端返回的json字符串类型时,都可使用JToken来表示,然后再根据JToken的type属性值来判断其究竟是哪种类型,最后再给出相应的处理方案。
JToken:抽象基类,最强大佬。可用于表示并存放各种JSON结果,包括JObject、JArray、JProperty、JValue。
JObject:用于操作JSON对象。既可使用parse方法通过现有的字符串解析生成,也可通过new关键字创建。但是不能遍历,请交给JToken完成!
JArray:用于操作JSON数组。既可使用parse方法通过现有的字符串解析生成,也可通过new关键字创建。
JProperty:用于操作对象属性,多用于对象遍历:name返回键名,value返回键值;
JValue:用于操作数组原生值,多用于数组遍历;
前后端分离的新同学,认真吃透这几个属性
Dim str As String = "['abc',123,0.01,null,'2020-04-13 15:30',true,false,[1,2,'cc',false],{'name':'李云龙','age':36}]"
Dim ja As jarray = jarray.parse(str) '将字符串解析为数组对象
Dim sb As new StringBuilder
For Each jt As JToken In ja '对数组遍历时,每个数组元素的基类是JToken
'根据JToken类型进行判断
'1如果是对象
If jt.Type.ToString() = "Object" Then
sb.AppendLine("Object类型:")
For Each jp As JProperty In jt
sb.Append(" " & jp.Name.ToString & ":")
sb.AppendLine(jp.Value.ToString )
Next
'2如果是对象
Else If jt.Type.ToString() = "Array" Then
sb.AppendLine("Array类型:")
For Each jv As JValue In jt
sb.AppendLine(" " & jv.ToString )
Next
Else
'3如果是原生值
sb.Append(jt.Type.ToString() & "类型:" )
sb.AppendLine(jt.ToString())
End If
Next
Output.Show(sb.ToString)结果如下
String类型:abc Integer类型:123 Float类型:0.01 Null类型: String类型:2020-04-13 15:30 Boolean类型:True Boolean类型:False Array类型: 1 2 cc False Object类型: name:李云龙 age:36