Поиск по сайту:

Android JSONObject — анализ JSON в Android


Android JSONObject используется для анализа JSON в приложениях для Android. В этом руководстве мы обсудим и реализуем JSONObject в нашем приложении для Android для анализа данных JSON. JSON означает нотацию объектов JavaScript.

Что такое JSON?

JSON используется для обмена данными (отправки и получения) с сервера. Следовательно, важно знать синтаксис и удобство его использования. JSON — лучшая альтернатива XML, и он более удобочитаем для человека. JSON не зависит от языка. Благодаря независимости от языка мы можем программировать JSON на любом языке (Java/C/C++). Ответ 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. Вложенные объекты JSON возможны и очень часто используются.
  3. Ключи: каждый JSONObject имеет ключевую строку, содержащую определенное значение.
  4. Значение: у каждого ключа есть одно значение, которое может быть строковым, двойным, целым, логическим и т. д.

Android JSONObject

Мы создадим JSONObject из статической строки данных JSON, указанной выше, и отобразим JSONArray в ListView. Мы изменим имя приложения на строку заголовка в данных JSON.

Анализ JSON в примере Android

Код синтаксического анализа 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, и добавили их в список ArrayList, который отображается в ListView. Имя приложения изменяется с помощью:

this.setTitle();

Вывод примера Android JSONObject

Загрузить Android JSON Parsing JSONObject Project

Ссылка: Официальная документация