android:json파싱하기
json파싱하기
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판이전 판다음 판 | 이전 판 | ||
android:json파싱하기 [2024/10/09 23:48] – 이거니맨 | android:json파싱하기 [2024/12/22 01:33] (현재) – 이거니맨 | ||
---|---|---|---|
줄 80: | 줄 80: | ||
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 = "", | ||
+ | ) | ||
</ | </ | ||
줄 101: | 줄 161: | ||
json으로 받아온 후 특정한 키 값을 받아오는 것은 다음과 같다. | json으로 받아온 후 특정한 키 값을 받아오는 것은 다음과 같다. | ||
- | < | + | < |
val jsonElementObject = JSONObject(sueItem.jsonElements) | val jsonElementObject = JSONObject(sueItem.jsonElements) | ||
val jsonAssault = jsonElementObject.getString(" | val jsonAssault = jsonElementObject.getString(" | ||
줄 114: | 줄 174: | ||
따라서 위 예제는 아래와 같이 해주는게 좋다. | 따라서 위 예제는 아래와 같이 해주는게 좋다. | ||
- | < | + | < |
val jsonElementObject = JSONObject(sueItem.jsonElements) | val jsonElementObject = JSONObject(sueItem.jsonElements) | ||
val jsonAssault = jsonElementObject.optString(" | val jsonAssault = jsonElementObject.optString(" | ||
줄 152: | 줄 212: | ||
</ | </ | ||
+ | ==== 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 | ||
+ | } | ||
+ | |||
+ | |||
+ | </ | ||
줄 276: | 줄 390: | ||
</ | </ | ||
+ | |||
+ | ===== 응용 ===== | ||
+ | |||
+ | [[android: |
android/json파싱하기.1728485337.txt.gz · 마지막으로 수정됨: 2024/10/09 23:48 저자 이거니맨