2017-12-02 2 views
0

이 코드가? "이름"ist는 잘 작동하는 첫 번째 차원입니다. PHP에서
솔루션이 자바에서 수행되는 방법액세스 JSON 배열 (자바)의 2 차원

$var = json[...][...] //for accessing the second dimension. 

는 것입니까? rootobj.get ("names/surname")과 같은 것이 작동하지 않습니다.

+1

당신이 JSON이 – bhspencer

+0

물론 어떻게 생겼는지의 예를 보여줄 수 그것의 하나의 속성에 액세스하는 방법을 얻을 사용! 여기에있는 것과 같이 : https://api.github.com/users/mralexgray/repos 첫 줄에 "0"-> "id"가 표시됩니다. 어떻게 ID에 액세스 할 수 있습니까? –

+0

'getAsString()'을 제거하고 그 이름을 새로운 객체로 취급하십시오 –

답변

0

코드에 따르면 JSON 처리를 위해 GSON을 사용한다고 가정합니다. JSON 요소가 배열 인 경우 get (index)을 사용하여 요소에 액세스하면됩니다. 여기 스케치 됨 :

//Not taking care of possible null values here 
JsonObject rootobj = ... 
JsonElement elem = rootobj.get("names"); 
if (elem.isJsonArray()) { 
    JsonArray elemArray = elem.getAsJsonArray(); 

    JsonElement innerElem = elemArray.get(0); 
    if (innerElem.isJsonArray()) { 
     JsonArray innerArray = innerElem.getAsJsonArray(); 
     //Now you can access the elements using get(..) 
     //E.g. innerArray.get(2); 
    } 
} 

물론 이것은 읽기에 좋지 않습니다. JsonPath에서 JSON 문서의 특정 부분을 쉽게 탐색 할 수 있습니다.

업데이트 : 참조한 문서에서 정확히 어떤 값을 추출 하시겠습니까? 귀하의 의견 중 하나에 따라 배열 요소의 ID 값은? 이 여기 this 예를 들어 다음과 같이 할 수있다 :

JsonElement root = jp.parse.... 
JsonArray rootArray = root.getAsJsonArray(); //Without check whether it is really an array 
//By the following you would extract the id 6104546 
//Access an other array position if you want the second etc. element 
System.out.println(rootArray.get(0).getAsJsonObject().get("id")); 

그렇지 않으면 정확히 당신이 원하는 더 자세히 설명해 주시겠습니까 (당신은 JSON 예제와 일치하지 않는 게시 된 코드는 당신이 참조).

+0

내 게시물의 업데이트로 인해 업데이트를 받을지 모르겠다. 논평. – MDDCoder25

0

Github 링크에서 루트 요소는 개체가 아니라 배열입니다.

그래서 당신이 그런 다음이 배열의 길이에 걸쳐 루프, 그리고 특정 개체에 액세스하는 get(i)을 사용
root.getAsJsonArray(); 

필요 (그리고 더 names 속성이 없다).

객체에서

, 또 다른