웹사이트 검색

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개의 주요 구성 요소로 구성됩니다.

  1. 배열: JSONArray는 대괄호([)로 묶여 있습니다. 개체 집합을 포함합니다
  2. 개체: 중괄호({)로 묶인 데이터는 단일 JSONObject입니다. 중첩된 JSONObject가 가능하며 매우 일반적으로 사용됩니다.
  3. 키: 모든 JSONObject에는 특정 값을 포함하는 키 문자열이 있습니다.
  4. 값: 모든 키에는 문자열, 이중, 정수, 부울 등 모든 유형이 될 수 있는 단일 값이 있습니다.

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 프로젝트 다운로드

참조: 공식 문서