본문 바로가기
안드로이드 자바

[Java][Android] JSON 데이터 사용해보기

by teamnova 2021. 4. 13.

이번 예제에서는 json을 사용해볼려고 합니다.

 

스틱코드라는 플러그인을 이용하면 더 빨리 개발할 수 있습니다..

 

이번에 참고한 스틱코드입니다.

 

* 안드로이드 JSON 파싱

stickode.com/detail.html?no=1292

 

스틱코드

 

stickode.com

============================================================================

JSON 이란??

 

JSON(제이슨[1], JavaScript Object Notation)은 속성-값 쌍( attribute - value pairs and array data types (or any other serializable value)) 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다.

'JSON의 공식 인터넷 미디어 타입은 application/json이며, JSON의 파일 확장자는 .json이다.

- 위키백과

 

일반적으로 서버에서 클라이언트로 데이터를 보낼 때 사용하는 양식. 클라이언트가 사용하는 언어에 관계 없이 통일된 데이터를 주고받을 수 있도록, 일정한 패턴을 지닌 문자열을 생성해 내보내면 클라이언트는 그를 해석해 데이터를 자기만의 방식으로 온전히 저장, 표시할 수 있게 된다.
과거 웹 초기 시절부터 사용되어 온 XML은 헤더와 태그 등의 여러 요소로 가독성이 떨어지고, 쓸데없이 용량을 잡아먹는다는 단점이 항상 지적되어 왔다. 이에 대응해 간결하고 통일된 양식으로 각광을 받고 있는 것이 JSON이다.

- 나무위키

 

json구조

{
    "food": [
        {
           "name": "salad",
           "재료": [
               "lettuce",
               "dressing"
               "Nuts and Seeds"
                       ]
        },
        {
           "name": "toast",
           "재로": [
               "bread",
               "egg"
               "suger"
                       ]
        }
    ]
}

============================================================================

 

안드로이드에서 JSON 사용해보기

 

json 파일을 직접 만들어보겠습니다.

1) Assets Folder를 만듭니다.

2) jsons 파일을 만듭니다.

3) 파일을 만듭니다. 파일의 이름은 test.json으로 설정하였습니다.

4) json 파일의 내용을 채워줍니다.

{
    "food": [
        {
           "name": "salad",
           "재료": [
               "lettuce",
               "dressing"
               "Nuts and Seeds"
                       ]
        },
        {
           "name": "toast",
           "재로": [
               "bread",
               "egg"
               "suger"
                       ]
        }
    ]
}

5) 이제 안드로이드에서 json파일을 넣었으니 값을 추출해봅시다.

package com.example.stickcode_json;
import android.widget.Toast;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.io.InputStream;

import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //json 자료 가져오기
        String json = "";
        try {
            InputStream is = getAssets().open("jsons/test.json"); // json파일 이름
            int fileSize = is.available();

            byte[] buffer = new byte[fileSize];
            is.read(buffer);
            is.close();

            //json파일명을 가져와서 String 변수에 담음
            json = new String(buffer, "UTF-8");
            Log.d("--  json = ", json);

		
            JSONObject jsonObject = new JSONObject(json);

            //배열로된 자료를 가져올때
            JSONArray Array = jsonObject.getJSONArray("food");//배열의 이름
            for(int i=0; i<Array.length(); i++)
            {
                JSONObject Object = Array.getJSONObject(i);
                Log.d("--  name is ", Object.getString("name"));
                Log.d("--  materials are", Object.getString("Material"));
            }

        } catch (IOException ex) {
            ex.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }

    }
}

 

결과물

 

아래와 같이 json과 추출한 데이터들이 잘 찍히는 것을 볼 수 있습니다.