以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]json解析没有这个值该怎么判断?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=172770)

--  作者:zto001
--  发布时间:2021/10/30 10:52:00
--  [求助]json解析没有这个值该怎么判断?
以下是json,第一个有weight值,第二个没有。我该怎么判断有没有取值?
我之前用的还是报错
If jo("weight") Is Nothing Then
    
    Output.Show("无该值")
Else
    Output.Show(jo("weight") .ToString  )
End If



{
    "data":{
        "773127202239":[
            {
                "memo":"【湖南株洲公司】的收件员【聂坚波】已收件",
                "weight":"0.2",
            },
            {                "memo":"快件由【湖南株洲公司】发往【湖南长沙转运中心】",

            },................................

--  作者:有点蓝
--  发布时间:2021/10/30 10:57:00
--  
就是上面的用法,报什么错?贴出完整代码说明
--  作者:zto001
--  发布时间:2021/10/30 11:27:00
--  

以下内容是专门发给有点蓝浏览


--  作者:有点蓝
--  发布时间:2021/10/30 11:31:00
--  
调试看看那一句代码出错?

不一定是weight的问题,比如data、776302079750583、opTime这些属性不存在都会出错的,如果这些属性不确定是否一定存在,应该都加上判断

--  作者:zto001
--  发布时间:2021/10/30 11:41:00
--  
因为这行里面没有weight,所以出错,其他出错原因也都是因为没有那个对象(是完全没有这个对象,不是空值)
--  作者:有点蓝
--  发布时间:2021/10/30 12:01:00
--  
我测试没有问题

Dim s As String = "{""data"":{""773127202239"":[{""memo"":""【湖南株洲公司】的收件员【聂坚波】已收件"",""weight"":""0.2"",},{""memo"":""快件由【湖南株洲公司】发往【湖南长沙转运中心】""}]}}"
Dim jo As JObject = JObject.Parse(s)

For Each jt As JObject In jo("data")("773127202239")
    If jt("weight") Is Nothing Then
        Output.Show("无该值")
    Else
        Output.Show(jt("weight").ToString  )
    End If
    
Next