2017-11-25 17 views
1

をしたいデータを見つけることができません.NET APIは、私はJSONリクエストのうちの2つの変数を保存しようとしているが、私はちょうどこれが私のリクエストで働い最初の1を取得しようとしている

:私もこれを返す

Token Trusty = jObject["DataTables"]["Results"]["Data"]["TrustFlow"][0]; 

を試してみた

System.ArgumentOutOfRangeException: 'Index was out of range. Must be non-negative and less than the size of the collection.'

:これは、このエラーを返します私が間違っているのは何

{ 
"Code":"OK","ErrorMessage":"","FullError":"","FirstBackLinkDate":"2017-08-17","IndexBuildDate":"2017-11-20 10:51:56","IndexType":1,"MostRecentBackLinkDate":"2017-11-18","QueriedRootDomains":0,"QueriedSubDomains":0,"QueriedURLs":1,"QueriedURLsMayExist":0,"ServerBuild":"2017-10-25 14:33:44","ServerName":"QUACKYO","ServerVersion":"1.0.6507.24412","UniqueIndexID":"20171120105156-FRESH", 
"DataTables":{ 
    "Results":{ 
     "Headers":{ 
"MaxTopicsRootDomain":30,"MaxTopicsSubDomain":20,"MaxTopicsURL":10,"TopicsCount":3 
    }, 
     "Data":[{ 
"RefDomainTypeProtocolHTTPS":"228","CitationFlow":42,"TrustFlow":29,"TrustMetric":29,"TopicalTrustFlow_Topic_0":"Health/Animal","TopicalTrustFlow_Value_0":26,"TopicalTrustFlow_Topic_1":"Business","TopicalTrustFlow_Value_1":25,"TopicalTrustFlow_Topic_2":"Computers/Internet/Domain Names","TopicalTrustFlow_Value_2":24 
    } 
]}}} 

'Accessed JArray values with invalid key value: "TrustFlow". Int32 array index expected.'

これは、私が試したJSONはそれだけで一つの長いラインとして来たURLのように自分自身を分離していますか?ありがとう。

+0

"データ"配列には1つの要素しかなく、[2]で3番目の要素を要求しています。もう一度試してみると、Trustflow配列の最初の要素を要求していますが、Trustflowは配列ではありません。 2度目の試行で[0]をドロップしますか? –

+0

配列はインデックスに基づいています。 'someArray [0]' – Shyju

+0

@MarcTalbotと同じエラー '無効なキー値を持つアクセスされたJArray値: "TrustFlow"を返します。 Int32配列インデックスが必要です。申し訳ありませんが、私はそれが前のレベルでそれを返すことをInt32で返すと言っていたことを意味しました – liamcook

答えて

2

プロパティDataのプロパティは、サイズが1の配列です。配列のインデックスは0です。ですから、someArray[1]ようsomeArray[0]として最初の項目と2番目の項目にアクセスしますので、

上のデータ配列の最初の項目のTrustFlowプロパティ内に格納さint値を読み取るには、この

int trustFlow = jObject["DataTables"]["Results"]["Data"][0]["TrustFlow"].Value<int>(); 
を行うことができます

これはあなたが質問で提供したJSONデータの場合に有効です。このコードは、データがその構造内にあることを期待しています。たとえば、Data配列にアイテムがない場合、またはResultsDataプロパティがない場合、コードはクラッシュします(おそらくヌル参照例外があります)。必要に応じて値にアクセスしようとする前に、ヌルチェックを自分で追加することができます。

+1

は夢のようです!ありがとうございました!配列に関する経験はまだありませんでしたが、実際には私のためにそれをクリアするだけでなく、動作させる:)感謝! – liamcook

関連する問題