引用周老师的话:
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