2017-11-25 10 views
1

원하는 데이터를 찾을 수 없습니다 나의 요청입니다.NET API는 내가이 JSON 요청에서 두 변수를 저장하기 위해 노력하고있어하지만 난 그냥이 일 첫 번째를 얻으려고

: 나는이 반환

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

"데이터"배열에는 하나의 요소 만 있으며 [2]와 함께 세 번째 요소를 요구하고 있습니다. 시도한 다른 것은 Trustflow 배열의 첫 번째 요소를 요청하는 것이지만 Trustflow는 배열이 아닙니다. 두 번째 시도에서 [0]을 삭제 하시겠습니까? –

+0

배열은 인덱스 기반입니다. 그래서 당신은 첫 번째 항목을'someArray [0]' – Shyju

+0

@MarcTalbot으로 접근 할 것입니다. 잘못된 키 값을 가진 액세스 된 JArray 값 "TrustFlow"와 같은 오류를 반환합니다. Int32 배열 인덱스가 필요합니다. ' 미안 해요. 내가 Int32에서 반환 할 때 이전 레벨에서 반환한다고 말하려고했던 것입니다. – liamcook

답변

2

Data 속성은 크기가 1 인 배열입니다. 배열의 인덱스는 0입니다. 그래서 당신은 someArray[1]someArray[0]로 첫 번째 항목과 두 번째 항목에 액세스 등

의 데이터 배열의 첫 번째 항목의 TrustFlow 건물 내부에 저장된 int 값을 읽으려면이

int trustFlow = jObject["DataTables"]["Results"]["Data"][0]["TrustFlow"].Value<int>(); 
을 수행 할 수 있습니다

이 질문에서 제공 한 JSON 데이터에 대해 작동합니다. 이 코드는 데이터가 해당 구조에 포함될 것으로 기대합니다. 예를 들어 Data 배열에 항목이 없거나 ResultsData 속성이 없으면 코드가 크래시됩니다 (null 참조 예외가있을 수 있음). 필요에 따라 값에 액세스하기 전에 널 확인을 직접 추가 할 수 있습니다.

+1

꿈을 이룹니다! 고맙습니다! 배열에 대한 경험은 아직 없지만 실제로는 나에게도 도움이됩니다. 감사합니다! – liamcook