Computer >> 컴퓨터 >  >> 프로그래밍 >> Android

안드로이드에서 JSON 문자열을 파싱하는 방법 완벽 가이드

이 튜토리얼에서는 안드로이드(Android) 애플리케이션에서 JSON 문자열을 파싱하는 방법을 단계별로 알아봅니다. JSON은 서버와 클라이언트 간 데이터를 주고받을 때 가장 널리 사용되는 형식이므로, 안드로이드 개발자라면 반드시 숙지해야 할 필수 기술입니다.

1단계: 새 프로젝트 생성

Android Studio를 실행하고 File ⇒ New Project 메뉴로 이동한 후, 새 프로젝트 생성에 필요한 모든 세부 정보를 입력하여 프로젝트를 만듭니다.

2단계: 레이아웃 파일 작성

res/layout/activity_main.xml 파일에 아래 코드를 추가합니다.

<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
   xmlns:app = "https://schemas.android.com/apk/res-auto"
   xmlns:tools = "https://schemas.android.com/tools"
   android:layout_width = "match_parent"
   android:gravity = "center"
   android:layout_height = "match_parent"
   tools:context = ".MainActivity">
   <TextView
      android:id = "@+id/text"
      android:textSize = "30sp"
      android:layout_width = "match_parent"
      android:layout_height = "match_parent" />
</LinearLayout>

위 코드에서는 JSON 요소의 값을 화면에 표시하기 위해 TextView 하나를 배치했습니다. 레이아웃은 화면 전체를 채우며, 텍스트 크기는 30sp로 설정되어 있습니다.

3단계: MainActivity 코드 작성

src/MainActivity.java 파일에 다음 코드를 추가합니다.

package com.example.myapplication;
import android.app.KeyguardManager;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkInfo;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.view.KeyEvent;
import android.widget.TextView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class MainActivity extends AppCompatActivity {
    TextView textView;
    String json = "{"
        + " \"geodata\": ["
        + " {"
        + " \"id\": \"1\","
        + " \"name\": \"Julie Sherman\","
        + " \"gender\" : \"female\","
        + " \"latitude\" : \"37.33774833333334\","
        + " \"longitude\" : \"-121.88670166666667\""
        + " },"
        + " ]"
        + "}";
    @RequiresApi(api = Build.VERSION_CODES.N)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = findViewById(R.id.text);
        try {
            final JSONObject obj = new JSONObject(json);
            final JSONArray geodata = obj.getJSONArray("geodata");
            final JSONObject person = geodata.getJSONObject(0);
            textView.setText(person.getString("name"));
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
   @Override
   protected void onStop() {
      super.onStop();
   }
   @Override
   protected void onResume() {
      super.onResume();
   }
}

코드 설명

JSON 파싱 과정은 다음과 같이 진행됩니다.

먼저 JSONObject 객체를 생성하여 전체 JSON 문자열을 담습니다. 그다음 getJSONArray("geodata") 메서드를 호출해 "geodata" 키에 해당하는 JSON 배열을 가져옵니다. 배열의 첫 번째 요소를 getJSONObject(0)으로 추출한 후, 최종적으로 getString("name")을 사용해 해당 객체의 "name" 값을 읽어와 TextView에 표시합니다. 파싱 중 오류가 발생할 경우를 대비해 try-catch 블록으로 JSONException을 처리한다는 점도 기억해 두세요.

애플리케이션 실행

이제 애플리케이션을 실행해 보겠습니다. 실제 안드로이드 모바일 기기를 컴퓨터에 연결했다고 가정합니다. Android Studio에서 프로젝트의 액티비티 파일 중 하나를 연 뒤, 툴바에서 Run(실행) 아이콘을 클릭하세요. 실행 옵션 목록에서 본인의 모바일 기기를 선택하면, 모바일 화면에 아래와 같은 결과가 표시됩니다.

안드로이드에서 JSON 문자열을 파싱하는 방법 완벽 가이드

화면에 "Julie Sherman"이라는 이름이 출력되면 JSON 문자열이 성공적으로 파싱된 것입니다. 이 방식을 활용하면 실제 API로부터 받아온 JSON 데이터도 손쉽게 처리할 수 있습니다.