사용자 도구

사이트 도구


android:json파싱하기
json파싱하기

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
android:json파싱하기 [2024/10/09 23:49] 이거니맨android:json파싱하기 [2024/12/22 01:33] (현재) 이거니맨
줄 80: 줄 80:
     return jsonDoc.toString()     return jsonDoc.toString()
 } }
 +
 +</code>
 +
 +==== 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 = "", // 기타 기본 값
 +)
  
 </code> </code>
줄 152: 줄 212:
 </code> </code>
  
 +==== 3. 해당 JSON요소가 없을 경우를 대비한 에러처리 추가 ==== 
 +
 +만약 JSON카테고리가 없을 경우 위의 optstring과 같은 기능을 하는 함수가 필요하다. 따라서 다음과 같이 고쳐주면 된다. 
 +
 +<code kotlin>
 +// 폭행 방법 JSON 받아오기
 +fun  getJsonMethodOfBattery(jsonObject: JSONObject) : MethodOfBattery {
 +
 +    // 만약 없는 경우 더미를 만들기
 +    if (jsonObject.isNull("methodOfBattery"))
 +    {
 +        // 피해상태
 +        val jsonMethod = JSONObject()
 +        try {
 +            jsonMethod.put("collar", "false")
 +            jsonMethod.put("push", "false")
 +            jsonMethod.put("pull", "false")
 +            jsonMethod.put("punch", "false")
 +            jsonMethod.put("kick", "false")
 +            jsonMethod.put("throwing", "false")
 +            jsonMethod.put("throwingDetail", "")
 +            jsonMethod.put("waffe", "false")
 +            jsonMethod.put("waffeDettail", "")
 +            jsonMethod.put("etc", "false")
 +            jsonMethod.put("etcDetail", "")
 +
 +            jsonObject.put("methodOfBattery", jsonMethod)   // 피해상태 JSON
 +        }catch (e: JSONException) {
 +            e.printStackTrace()
 +        }
 +    }
 +
 +    // JSON 받아오기
 +    val jsonMethodObject = jsonObject.getJSONObject("methodOfBattery")
 +
 +    val valueOfMethod : MethodOfBattery = MethodOfBattery(
 +        collar = jsonMethodObject.optString("collar", "false").toBoolean(),
 +        push = jsonMethodObject.optString("push", "false").toBoolean(),
 +        pull = jsonMethodObject.optString("pull", "false").toBoolean(),
 +        punch = jsonMethodObject.optString("punch", "false").toBoolean(),
 +        kick  = jsonMethodObject.optString("kick", "false").toBoolean(),
 +        throwing = jsonMethodObject.optString("throwing", "false").toBoolean(),
 +        throwingDetail = jsonMethodObject.optString("throwingDetail", ""),
 +        waffe = jsonMethodObject.optString("waffe", "false").toBoolean(),
 +        waffeDetail = jsonMethodObject.optString("waffeDetail", ""),
 +        etc = jsonMethodObject.optString("etc", "false").toBoolean(),
 +        etcDetail = jsonMethodObject.optString("etcDetail", "없음")
 +    )
 +
 +    return valueOfMethod
 +}
 +
 +
 +</code>
  
  
줄 276: 줄 390:
  
 </code> </code>
 +
 +===== 응용 =====
 +
 +[[android:pdfdocument:commandmirroring#고소인과 피고소인 테이블 만들기|고소인과, 피고소인에 대한 데이터를 주고 받을 때]]에도 이 방식을 이용했다. 
android/json파싱하기.1728485356.txt.gz · 마지막으로 수정됨: 2024/10/09 23:49 저자 이거니맨