왤케 파싱부분은 항상 어려운지 모르겠다...
파싱만 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번 반복...!
이런식으로 해주니 파싱이 잘되었다😱
아직 파싱이 너무 어렵다. 그래도 계속하다보면 익숙해지겠지..?
은아 힘내자 ㅋㅎ
'개발 > Android' 카테고리의 다른 글
[안드로이드] 4대 컴포넌트 (0) | 2022.02.06 |
---|---|
[안드로이드] 매니페스트 (Manifest) (0) | 2022.02.06 |
[안드로이드] Activity 배경 투명으로 하기 (0) | 2021.09.16 |
[안드로이드] Attempt to write to null array 에러 (0) | 2021.09.14 |
[안드로이드] Retrofit을 이용하여 node.js 통신하기 (2) (0) | 2021.09.05 |