이번 예제에서는 json을 사용해볼려고 합니다.
스틱코드라는 플러그인을 이용하면 더 빨리 개발할 수 있습니다..
이번에 참고한 스틱코드입니다.
* 안드로이드 JSON 파싱
stickode.com/detail.html?no=1292
============================================================================
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과 추출한 데이터들이 잘 찍히는 것을 볼 수 있습니다.
'안드로이드 자바' 카테고리의 다른 글
[Java][Android] Floating Action Menu 만들기 (2) | 2021.04.18 |
---|---|
[Java][Android] SeekBar 시크바 기본 사용법 (2) | 2021.04.14 |
[Java][Android] Swipe Refresh 레이아웃 적용 (0) | 2021.04.12 |
[Java][Android] 모바일 네트워크 연결 상태 확인 (0) | 2021.04.10 |
[Java][Android] 리사이클러뷰에 페이징 적용하기 (0) | 2021.04.08 |