VB.NET使用Newtonsoft解析JSON:获取payload下的result等字段
VB.NET解析JSON获取深层字段方法
你可以基于当前使用的Newtonsoft.Json库(JObject),通过以下两种方式获取JSON深层节点的信息:
方法一:直接用SelectToken指定完整路径
SelectToken支持通过点分隔的路径直接定位深层字段,适合快速获取单个节点:
Dim json As String = str Dim parseJson As JObject = JObject.Parse(json) ' 你已实现的code字段获取 Dim code As String = parseJson.SelectToken("code").ToString() MsgBox("响应码: " + code) ' 获取payload.transaction.result Dim transactionResult As String = parseJson.SelectToken("payload.transaction.result").ToString() MsgBox("交易结果: " + transactionResult) ' 其他深层字段示例 Dim amount As String = parseJson.SelectToken("payload.transaction.amount").ToString() MsgBox("交易金额: " + amount) ' 获取level3层级的目的地国家码 Dim countryCode As String = parseJson.SelectToken("payload.transaction.level3.destination-country-code").ToString() MsgBox("目的地国家码: " + countryCode)
方法二:逐层解析JObject(适合批量获取字段)
如果需要一次性读取多个深层字段,先逐层获取对应JObject再读取字段会更清晰:
Dim json As String = str Dim parseJson As JObject = JObject.Parse(json) ' 逐层获取嵌套对象 Dim payload As JObject = CType(parseJson("payload"), JObject) Dim transaction As JObject = CType(payload("transaction"), JObject) Dim level3 As JObject = CType(transaction("level3"), JObject) ' 读取transaction下的多个字段 Dim result As String = transaction("result").ToString() Dim transactionId As String = transaction("id").ToString() Dim cardType As String = transaction("card-type").ToString() ' 读取level3下的字段 Dim orderDate As String = level3("order-date").ToString() ' 批量展示结果 MsgBox($"交易结果: {result}, 交易ID: {transactionId}, 卡类型: {cardType}")
注意事项
- 空值处理:如果字段可能不存在,建议先判断非空避免报错:
Dim result As String = If(transaction("result") IsNot Nothing, transaction("result").ToString(), "未获取到结果") - 类型转换:数值型字段(如amount)可转换为对应数据类型:
Dim amountDecimal As Decimal = Convert.ToDecimal(transaction("amount").ToString())
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

