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 основных компонентов, перечисленных ниже:
- Массив. Массив JSONArray заключен в квадратные скобки ([). Он содержит набор объектов
- Объект: данные, заключенные в фигурные скобки ({), представляют собой один JSONObject. Вложенные объекты JSON возможны и очень часто используются.
- Ключи: каждый JSONObject имеет ключевую строку, содержащую определенное значение.
- Значение: у каждого ключа есть одно значение, которое может быть строковым, двойным, целым, логическим и т. д.
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
Ссылка: Официальная документация