본문 바로가기
안드로이드

[Android] Json

by 엘딘 2022. 3. 31.

Android <> Backend 서로 데이터를 전송하는 방식을 Restful이라고 한다.

 

Backend에서 Android로 데이터를 넘겨줄땐 Json으로 해석되어 넘겨준다.

 

웹상에 올라가 있는 데이터가 있다고 가정

data.json

main폴더에 assets폴더를 생성한 후 data.json파일을 생성

  (assets폴더는 보여지지 않을 뿐 지원이 되는 폴더. 아무폴더나 생성X)

// 단순 출력시킬 데이터역할
[
  {
    "id" : "Kotlin",
    "language" : "코틀린"
  },
  {
    "id" : "Java",
    "language" : "자바"
  },
  {
    "id": "swift",
    "language": "스위프트"
  }
]

 

MainActivity
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // 문자열
        val jsonStr = assets.open("data.json").reader().readText()
        // assets는 지원이 되는 폴더라 사용 가능(다른 폴더 임의 사용 불가)
        Log.d("jsonStr", jsonStr)

        // Json으로 파싱
        val jsonArray = JSONArray(jsonStr)
        Log.d("jsonStr", jsonArray.toString())

        val textView = findViewById<TextView>(R.id.textView)

        for(i in 0 until jsonArray.length()){
            // 코틀린, 자바, 스위프트 하나씩 가져오기 위해서
            val jsonObject = jsonArray.getJSONObject(i)

            textView.append("\n-------------------------------------\n")

            // data.json id의 데이터를 id변수에 넣어줌
            val id = jsonObject.getString("id")
            val language = jsonObject.getString("language")

            // append는 기존 내용을 유지한 채 뒤에 데이터를 넣어주는 메서드(setText는 내용을 지우고 새로 세팅)
            // """사용시 다중 문자열 표기 
            // """사용하여 문자열을 작성하면 공백과 탭 모두 포함하여 .trimIndent를 사용하여 들여쓰기 제거
            textView.append(
                """
                    $id
                """.trimIndent()
            )
            textView.append(
                """
                    $language
                """.trimIndent()
            )

        }
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'안드로이드' 카테고리의 다른 글

[Android] Singleton  (0) 2022.03.31
[Android] Preferences  (0) 2022.03.31
[Android] File(추후 작성)  (0) 2022.03.31
[Android] Clock  (0) 2022.03.28
[Android] DatePicker  (0) 2022.03.28

댓글