2017-06-10 5 views
0

JSON上の子値にアクセスすることはできません。エラーを停止するためのチェックプロパティが存在します。 Newtonsoft.Json.Linq.JProperty

{ 
    "status": "OK", 
    "maximum_reached": 0, 
    "top_domain": { 
    "dont_show": 1 
    }, 
    "free_domains": [ 
    { 
     "status": "AVAILABLE", 
     "domain": "go", 
     "tld": ".tk", 
     "currency": "USD", 
     "type": "SPECIAL", 
     "price_int": "1000", 
     "price_cent": "00", 
     "show_top_domain": 0, 
     "is_in_cart": 0 
    }, 
    ] 
} 

VB.NETコード:

Dim jsonObj As JObject = JObject.Parse(hr.Html) 

If IsNothing(jsonObj.[Property]("free_domains")(0)("status")) Then 

End If 

エラー:

Cannot access child value on Newtonsoft.Json.Linq.JProperty

どのようにプロパティを確認することができますそれが利用できないときにエラーを引き起こさないようにするために存在しますか?

答えて

0

free_domainsというプロパティは、jsonObjに存在し、戻り値jsonObj.[Property]("free_domains")をチェックすると、適切なオブジェクトが含まれています。

jsonObj.[Property]("free_domains")は、プロパティディスクリプタであるタイプJPropertyのオブジェクトを返します。この記述子はプロパティ値を直接表現しません。この値にアクセスするために、JProperty.Valueを使用します。

jsonObj.[Property]("free_domains").Value(0)("status") 

値にアクセスするための簡単な方法は、しかし、があります。 jsonObjの文字列インデクサーを使用します。

jsonObj("free_domains")(0)("status") 

プロパティが存在するかどうかを確認するには、文字列インデクサによって返された値がNothingないかどうかを確認します。ヌル条件演算子は階層内の一連のプロパティにアクセスする際に便利です。

If IsNothing(jsonObj("free_domains")?(0)?("status")) Then 

End If 
+0

ありがとうございました。できます。 –

関連する問題