개발/Android

[안드로이드/Java] JSONArray 파싱하기

Eun 2021. 9. 16. 11:05

왤케 파싱부분은 항상 어려운지 모르겠다...

파싱만 2주정도 헤매다가 겨우겨우 ㅠㅠㅠ 성공 🥲

 

까먹기 전에 얼른 정리하려고 한다.

우선 나의 데이터는 

{"code":0,"message":"success",

"accounts":[{"data":"0x4dfc2340dd9b62fd02322dedfdaa5e7c49c3c14d"},{"data":"0xe9b5f4705a270325fa641b59131eda8b06dd12d2"},{"data":"0x59e1f747d19f3985c270b9773d74b91c912156ef"},{"data":"0x108b0cb87cd3e3d67e58dc6d2780f705fd145b35"},{"data":"0xfefd32130e10a2435096758f6ed2258f922dd81c"},{"data":"0xc372516fc8019acc40206a4398dd1d38f951e5f8"},{"data":"0xb485bc897086cb58a76369ccc3fe7378293320f3"},{"data":"0xe57c9617c014e5c9e60c77a766619c46ddeca823"},{"data":"0xc4b03f894bb225693045fd3293a0ff1ddb67c6a2"},{"data":"0xf8051d1f262d981e4cfa52a8dfef6a7821042add"}]}

이렇게 생겼다... 블록체인 계정때문에 굉장히 복잡한 문자같지만 간단하게는 code와 message와 accounts안에 data라는 10개의 계정!

우선 코드부터 짜안

public String[] accounts = new String[10];

        JSONArray jsonArray = null;
                    try {
                        JSONObject jsonObject = new JSONObject(response.body().string());
                        jsonArray = jsonObject.getJSONArray("accounts");

                        JsonParser jsonParser = new JsonParser();
                        JsonArray jsonArray1 = (JsonArray) jsonParser.parse(String.valueOf(jsonArray));

                        for (int k = 0; k < jsonArray.length(); k++) {
                            JsonObject object = (JsonObject) jsonArray1.get(k);
                            String data = object.get("data").getAsString();
                            accounts[k]=data;
                        }

                    } catch (JSONException | IOException e) {
                        e.printStackTrace();
                    }

우선은 JSONObject 객체를 만든후에 받아온 데이터를 String으로 가져왔다. (response.body().string()) 부분

그 후에 acccounts가 여러개이니 JSONArray객체를 생성해서 getJSONArray("accounts")로 가져왔다.

여기까지 하면 데이터는 

 

[{"data":"0x4dfc2340dd9b62fd02322dedfdaa5e7c49c3c14d"},{"data":"0xe9b5f4705a270325fa641b59131eda8b06dd12d2"},{"data":"0x59e1f747d19f3985c270b9773d74b91c912156ef"},{"data":"0x108b0cb87cd3e3d67e58dc6d2780f705fd145b35"},{"data":"0xfefd32130e10a2435096758f6ed2258f922dd81c"},{"data":"0xc372516fc8019acc40206a4398dd1d38f951e5f8"},{"data":"0xb485bc897086cb58a76369ccc3fe7378293320f3"},{"data":"0xe57c9617c014e5c9e60c77a766619c46ddeca823"},{"data":"0xc4b03f894bb225693045fd3293a0ff1ddb67c6a2"},{"data":"0xf8051d1f262d981e4cfa52a8dfef6a7821042add"}]}

 

이렇게 뽑아온다. 여기서 data를 가져와야한다.

JsonParser를 이용해서 파싱을 한다! 인터넷에는 JSONObejct과 JSONArray로만 데이터를 파싱하던데 나는 안되서 2주나 고생 ㅠ

JsonParser를 이용하니 해결!!

그리고  JSONObject를 만들어준 뒤 키 값이 "data"인 값을 가져와서 data변수에 저장! 그리고 그 data를 

accounts라는 String배열에 차곡차곡 저장해주었다.

이걸 for문을 이용해서 10번 반복...!

 

이런식으로 해주니 파싱이 잘되었다😱

아직 파싱이 너무 어렵다. 그래도 계속하다보면 익숙해지겠지..?

은아 힘내자 ㅋㅎ