Android JSONObject - Android의 JSON 구문 분석
Android JSONObject는 Android 앱에서 JSON 구문 분석에 사용됩니다. 이 자습서에서는 JSON 데이터를 구문 분석하기 위해 Android 애플리케이션에서 JSONObject
에 대해 논의하고 구현합니다. JSON은 JavaScript Object Notation의 약자입니다.
JSON이란 무엇입니까?
JSON은 서버에서 데이터 교환(게시 및 검색)에 사용됩니다. 따라서 구문과 유용성을 아는 것이 중요합니다. JSON은 XML에 대한 최상의 대안이며 사람이 더 쉽게 읽을 수 있습니다. JSON은 언어 독립적입니다. 언어 독립성 때문에 모든 언어(Java/C/C++)에서 JSON을 프로그래밍할 수 있습니다. 서버의 JSON 응답은 많은 필드로 구성됩니다. JSON 응답/데이터의 예는 다음과 같습니다. 우리는 그것을 참조로 사용하고 응용 프로그램에서 구현할 것입니다.
{
"title":"JSONParserTutorial",
"array":[
{
"company":"Google"
},
{
"company":"Facebook"
},
{
"company":"LinkedIn"
},
{
"company" : "Microsoft"
},
{
"company": "Apple"
}
],
"nested":{
"flag": true,
"random_number":1
}
}
이 페이지에서 임의의 JSON 데이터 문자열을 생성했습니다. JSON 데이터 편집에 편리합니다. JSON 데이터는 아래에 나열된 4개의 주요 구성 요소로 구성됩니다.
- 배열: JSONArray는 대괄호([)로 묶여 있습니다. 개체 집합을 포함합니다
- 개체: 중괄호({)로 묶인 데이터는 단일 JSONObject입니다. 중첩된 JSONObject가 가능하며 매우 일반적으로 사용됩니다.
- 키: 모든 JSONObject에는 특정 값을 포함하는 키 문자열이 있습니다.
- 값: 모든 키에는 문자열, 이중, 정수, 부울 등 모든 유형이 될 수 있는 단일 값이 있습니다.
Android JSON객체
위에 제공된 정적 JSON 데이터 문자열에서 JSONObject를 생성하고 JSONArray를 ListView에 표시합니다. 애플리케이션 이름을 JSON 데이터의 제목 문자열로 변경합니다.
Android 예제의 JSON 파싱
Android JSON 파싱 코드
activity_main.xml
은 아래와 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
xmlns:tools="https://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.journaldev.jsonparsing.MainActivity">
<ListView
android:layout_width="wrap_content"
android:id="@+id/list_view"
android:layout_height="match_parent"/>
</RelativeLayout>
MainActivity.java
는 아래와 같습니다.
package com.journaldev.jsonparsing;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
String json_string = "{\n" +
" \"title\":\"JSONParserTutorial\",\n" +
" \"array\":[\n" +
" {\n" +
" \"company\":\"Google\"\n" +
" },\n" +
" {\n" +
" \"company\":\"Facebook\"\n" +
" },\n" +
" {\n" +
" \"company\":\"LinkedIn\"\n" +
" },\n" +
" {\n" +
" \"company\" : \"Microsoft\"\n" +
" },\n" +
" {\n" +
" \"company\": \"Apple\"\n" +
" }\n" +
" ],\n" +
" \"nested\":{\n" +
" \"flag\": true,\n" +
" \"random_number\":1\n" +
" }\n" +
"}";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
ListView listView = (ListView) findViewById(R.id.list_view);
List<String> items = new ArrayList<>();
JSONObject root = new JSONObject(json_string);
JSONArray array= root.getJSONArray("array");
this.setTitle(root.getString("title"));
for(int i=0;i<array.length();i++)
{
JSONObject object= array.getJSONObject(i);
items.add(object.getString("company"));
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, items);
if (listView != null) {
listView.setAdapter(adapter);
}
JSONObject nested= root.getJSONObject("nested");
Log.d("TAG","flag value "+nested.getBoolean("flag"));
} catch (JSONException e) {
e.printStackTrace();
}
}
}
우리는 JSONArray
개체를 통해 반복하고 각 하위 JSONObject
에 있는 문자열을 가져와 ListView에 표시되는 ArrayList에 추가했습니다. 애플리케이션 이름은 다음을 사용하여 변경됩니다.
this.setTitle();
Android JSONObject 예제 출력
Android JSON 구문 분석 JSONObject 프로젝트 다운로드
참조: 공식 문서