android:json파싱하기
json파싱하기
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
| 양쪽 이전 판이전 판다음 판 | 이전 판 | ||
| android:json파싱하기 [2024/10/09 23:49] – 이거니맨 | android:json파싱하기 [2025/04/23 23:37] (현재) – 이거니맨 | ||
|---|---|---|---|
| 줄 79: | 줄 79: | ||
| return jsonDoc.toString() | return jsonDoc.toString() | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== 3. 데이터 클라스 ==== | ||
| + | |||
| + | 위에 쓰인 데이터클라스의 모양은 다음과 같다. | ||
| + | |||
| + | <code kotlin> | ||
| + | // 폭행의 종류 | ||
| + | data class KindOfAssault( | ||
| + | |||
| + | var checkFamily : Boolean = false, // 가정폭력 | ||
| + | var checkDating : Boolean = false, | ||
| + | var checkEnfant : Boolean = false, | ||
| + | var checkSchool : Boolean = false, | ||
| + | var checkSenior : Boolean = false, | ||
| + | var checkMedical : Boolean = false, | ||
| + | var checkAirplane : Boolean = false, // 항공기 내 폭행 | ||
| + | var checkDriver : Boolean = false, // 운전자 폭행 | ||
| + | var checkAssault : Boolean = false // 일반 폭행 | ||
| + | |||
| + | ) | ||
| + | |||
| + | // 피고소인과의 관계 | ||
| + | data class RelationshipWithVictim( | ||
| + | var spouse : Boolean = false, | ||
| + | var parents : Boolean = false, // 존속 | ||
| + | var family : Boolean = false, // 배주자 및 존속을 제외한 가족 | ||
| + | var lover : Boolean = false, // 연인, 데이팅 폭력 | ||
| + | var friend : Boolean = false, // 친구, 학교폭력 | ||
| + | var unaquaintance : Boolean = false, // 모르는 사람 | ||
| + | var etc : Boolean = false, // 기타 | ||
| + | var etcDetail : String = " | ||
| + | ) | ||
| + | |||
| + | // 피해상태 | ||
| + | data class StatusOfTrauma( | ||
| + | var bloated : Boolean = false, // 부어오름(부종) | ||
| + | var blooded : Boolean = false, // 피가 남 | ||
| + | var brokenBone : Boolean = false, // 뼈가 부러짐 | ||
| + | var bruise : Boolean = false, // 멍 | ||
| + | var nothing : Boolean = false, // 외부 상처 없음 | ||
| + | var etc : Boolean = false, // 기타 | ||
| + | var etcDetail: String = " | ||
| + | ) | ||
| + | |||
| + | // 폭행 방법 | ||
| + | data class MethodOfBattery( | ||
| + | var collar : Boolean = false, // 멱살잡다 | ||
| + | var push : Boolean = false, // 밀침 | ||
| + | var pull : Boolean = false, // 잡아당김 | ||
| + | var punch : Boolean = false, // 주먹으로 때림 | ||
| + | var kick : Boolean = false, // 발로 참 | ||
| + | var throwing : Boolean = false, // 물건을 던짐 | ||
| + | var throwingDetail : String = "", | ||
| + | var waffe : Boolean = false, // 흉기를 휘두름 | ||
| + | var waffeDetail : String = "", | ||
| + | var etc : Boolean = false, // 기타 | ||
| + | var etcDetail: String = "", | ||
| + | ) | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== 4. 배열(JSON Array) ==== | ||
| + | |||
| + | 배열로 저장하고 싶으면 JSON Array를 선언해 주고, 여기에 JSON 모델을 집어넣으면 된다. 다음 예제를 참고하라. | ||
| + | |||
| + | <code kotlin> | ||
| + | // JSON Array로 스트링 만들기 | ||
| + | fun writeJsonArray(answerTexts : ArrayList< | ||
| + | |||
| + | |||
| + | //JsonArray 생성 | ||
| + | val jArray: JSONArray = JSONArray() | ||
| + | |||
| + | answerTexts.forEach() { | ||
| + | // 폭행 종류 JSON | ||
| + | val jsonAnswer = JSONObject() | ||
| + | try { | ||
| + | jsonAnswer.put(" | ||
| + | jsonAnswer.put(" | ||
| + | jsonAnswer.put(" | ||
| + | |||
| + | jArray.put(jsonAnswer) | ||
| + | } catch (e: JSONException) { | ||
| + | // TODO Auto-generated catch block | ||
| + | e.printStackTrace() | ||
| + | } | ||
| + | } | ||
| + | |||
| + | |||
| + | |||
| + | return jArray.toString() | ||
| } | } | ||
| 줄 152: | 줄 246: | ||
| </ | </ | ||
| + | ==== 3. 해당 JSON요소가 없을 경우를 대비한 에러처리 추가 ==== | ||
| + | |||
| + | 만약 JSON카테고리가 없을 경우 위의 optstring과 같은 기능을 하는 함수가 필요하다. 따라서 다음과 같이 고쳐주면 된다. | ||
| + | |||
| + | <code kotlin> | ||
| + | // 폭행 방법 JSON 받아오기 | ||
| + | fun getJsonMethodOfBattery(jsonObject: | ||
| + | |||
| + | // 만약 없는 경우 더미를 만들기 | ||
| + | if (jsonObject.isNull(" | ||
| + | { | ||
| + | // 피해상태 | ||
| + | val jsonMethod = JSONObject() | ||
| + | try { | ||
| + | jsonMethod.put(" | ||
| + | jsonMethod.put(" | ||
| + | jsonMethod.put(" | ||
| + | jsonMethod.put(" | ||
| + | jsonMethod.put(" | ||
| + | jsonMethod.put(" | ||
| + | jsonMethod.put(" | ||
| + | jsonMethod.put(" | ||
| + | jsonMethod.put(" | ||
| + | jsonMethod.put(" | ||
| + | jsonMethod.put(" | ||
| + | |||
| + | jsonObject.put(" | ||
| + | }catch (e: JSONException) { | ||
| + | e.printStackTrace() | ||
| + | } | ||
| + | } | ||
| + | |||
| + | // JSON 받아오기 | ||
| + | val jsonMethodObject = jsonObject.getJSONObject(" | ||
| + | |||
| + | val valueOfMethod : MethodOfBattery = MethodOfBattery( | ||
| + | collar = jsonMethodObject.optString(" | ||
| + | push = jsonMethodObject.optString(" | ||
| + | pull = jsonMethodObject.optString(" | ||
| + | punch = jsonMethodObject.optString(" | ||
| + | kick = jsonMethodObject.optString(" | ||
| + | throwing = jsonMethodObject.optString(" | ||
| + | throwingDetail = jsonMethodObject.optString(" | ||
| + | waffe = jsonMethodObject.optString(" | ||
| + | waffeDetail = jsonMethodObject.optString(" | ||
| + | etc = jsonMethodObject.optString(" | ||
| + | etcDetail = jsonMethodObject.optString(" | ||
| + | ) | ||
| + | |||
| + | return valueOfMethod | ||
| + | } | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | ==== 4. 배열로 읽어 오기 ==== | ||
| + | |||
| + | 배열로 읽는 것은 다음과 같이 하면 된다. | ||
| + | |||
| + | <code kotlin> | ||
| + | // 스트링에서 JSON 배열을 돌려주는 함수 | ||
| + | fun getJsonAnswerText(jsonText : String) : ArrayList< | ||
| + | |||
| + | try { | ||
| + | val jsonArray = JSONArray(jsonText) | ||
| + | |||
| + | val textArray = ArrayList< | ||
| + | |||
| + | for (i in 0 until jsonArray.length()) { | ||
| + | val jsonObject = jsonArray[i] as JSONObject | ||
| + | |||
| + | val valueOfAnswer : AnswerText = AnswerText( | ||
| + | text = jsonObject.optString(" | ||
| + | correctness = jsonObject.optString(" | ||
| + | index = jsonObject.optString(" | ||
| + | |||
| + | ) | ||
| + | |||
| + | textArray.add(valueOfAnswer) | ||
| + | } | ||
| + | |||
| + | return textArray | ||
| + | }catch (e: JSONException) { | ||
| + | // TODO Auto-generated catch block | ||
| + | e.printStackTrace() | ||
| + | } | ||
| + | | ||
| + | // 아래 코드는 만약에 에러가 날 경우에만 돌려주는 더미 배열이다. | ||
| + | val textArray = ArrayList< | ||
| + | |||
| + | return textArray | ||
| + | |||
| + | } | ||
| + | |||
| + | </ | ||
| 줄 276: | 줄 465: | ||
| </ | </ | ||
| + | |||
| + | ===== 응용 ===== | ||
| + | |||
| + | [[android: | ||
android/json파싱하기.1728485356.txt.gz · 마지막으로 수정됨: 저자 이거니맨
