Tech

Java JSONObject에서 키 값이 없는 경우 파싱하기

융서융서 2021. 7. 18. 18:09

Github API를 사용해서 한달간의 commit 수를 나타내는 json 값을 파싱해와야 하는 일이 있었다.

그런데 key값이 없어서 값을 다루는 데 삽질하다가 JSONArray로 접근해서 해결한 내용을 포스팅하려 한다.

 

아래는 내가 가져올 JSON 값이었다.

key값이 하나도 지정돼있지 않고, value의 배열이 나열되어 있었다.

각 배열의 3번째값이 그 날의 Commit 수를 나타내고 있었기에, 나는 각 배열의 3번째 값들 (3, 10, 8)만 get해와서 더해주고자 했다.

 

[
  [
    0,
    0,
    3
  ],
  [
    0,
    1,
    10
  ],
  [
    0,
    2,
    8
  ]
 ]

 

그런데 key값이 없어서 값을 get 해올 수가 없었다.

 

obj의 값에 접근할 수가 없다


//참고 --- 일반적인 JSON 형식 (key값 존재)

{
"age":22,
"name":"ottl-seo"
}

위와 같은 일반적인 JSONObject에서 값을 get해오려면,

JSONObject.get("age"); 처럼 key값이 필요한데

키 값이 없으니 JSONObject 값에 접근할 수가 없었다. (인덱스로 접근할 수 있는 방법이 없었다)


 

그래서,

JSONArray를 활용해서 접근해보았다.

 

JSONArray.get(인덱스번호); 를 통해서 key값 없이도 value 값에 접근할 수 있다.

그리고 값을 더해주기 위해 (long)으로 강제 형변환을 거쳐주었다.

 

그랬더니 빨간줄이 없어지고 제대로 값을 더해줄 수 있었다.