Android JSONObject - Android 中的 JSON 解析

Android JSONObject用于Android应用中的JSON解析。在本教程中,我们将讨论并在我们的Android应用程序中实现一个JSONObject来解析JSON数据。

什么是JSON?

JSON用于从服务器进行数据交换(发布和检索)。因此,了解语法及其可用性是很重要的。JSON是XML的最佳替代方案,其可读性更强。JSON是语言独立的 。由于语言无关性,我们可以用任何语言(Java/C/C++)编写JSON。来自服务器的JSON响应由许多字段组成。下面给出了一个JSON响应/数据示例。我们将使用它作为引用并在我们的应用程序中实现它。

 1{
 2  "title":"JSONParserTutorial",
 3  "array":[
 4    {
 5    "company":"Google"
 6    },
 7    {
 8      "company":"Facebook"
 9    },
10    {
11    "company":"LinkedIn"
12    },
13    {
14      "company" : "Microsoft"
15    },
16    {
17      "company": "Apple"
18    }
19    ],
20    "nested":{
21    "flag": true,
22    "random_number":1
23    }
24}

我们已经从This页面)创建了一个随机的json数据字符串。它可以方便地编辑JSON数据。JSON数据由下面列出的4个主要组成部分组成:

1.数组 :一个** JSON数组** 用方括号([)括起来。它包含一组对象 2.对象 :用大括号({)括起来的数据是单个JSONObject。嵌套的JSONObject是可能的,也是非常常用的 3.Key :每个JSONObject都有一个包含一定值的Key字符串 4. :每个键都有一个值,可以是字符串、双精度、整型、布尔型等任意类型

Android JSONObject

我们将从上面给出的静态JSON数据字符串创建一个JSON对象,并在ListView.中显示该JSON数组我们将在JSON数据中将应用程序名称更改为标题字符串。

Android中的JSON解析示例

下图显示了json解析示例的Android工作室项目。该项目由默认的活动和布局(带有ListView)组成。安卓中的JSON解析,安卓JSONObject

Android JSON解析代码

active_main.xml如下所示。

 1<?xml version="1.0" encoding="utf-8"?>
 2<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
 3    xmlns:tools="https://schemas.android.com/tools"
 4    android:layout_width="match_parent"
 5    android:layout_height="match_parent"
 6    android:paddingBottom="@dimen/activity_vertical_margin"
 7    android:paddingLeft="@dimen/activity_horizontal_margin"
 8    android:paddingRight="@dimen/activity_horizontal_margin"
 9    android:paddingTop="@dimen/activity_vertical_margin"
10    tools:context="com.journaldev.jsonparsing.MainActivity">
11
12    <ListView
13        android:layout_width="wrap_content"
14        android:id="@+id/list_view"
15        android:layout_height="match_parent"/>
16
17</RelativeLayout>

MainActivity.java如下所示。

 1package com.journaldev.jsonparsing;
 2
 3import android.support.v7.app.AppCompatActivity;
 4import android.os.Bundle;
 5import android.util.Log;
 6import android.widget.ArrayAdapter;
 7
 8import android.widget.ListView;
 9
10import org.json.JSONArray;
11import org.json.JSONException;
12import org.json.JSONObject;
13
14import java.util.ArrayList;
15import java.util.List;
16
17public class MainActivity extends AppCompatActivity {
18
19    String json_string = "{\n" +
20            "  \"title\":\"JSONParserTutorial\",\n" +
21            "  \"array\":[\n" +
22            "    {\n" +
23            "    \"company\":\"Google\"\n" +
24            "    },\n" +
25            "    {\n" +
26            "      \"company\":\"Facebook\"\n" +
27            "    },\n" +
28            "    {\n" +
29            "    \"company\":\"LinkedIn\"\n" +
30            "    },\n" +
31            "    {\n" +
32            "      \"company\" : \"Microsoft\"\n" +
33            "    },\n" +
34            "    {\n" +
35            "      \"company\": \"Apple\"\n" +
36            "    }\n" +
37            "    ],\n" +
38            "    \"nested\":{\n" +
39            "    \"flag\": true,\n" +
40            "    \"random_number\":1\n" +
41            "    }\n" +
42            "}";
43
44    @Override
45    protected void onCreate(Bundle savedInstanceState) {
46        super.onCreate(savedInstanceState);
47        setContentView(R.layout.activity_main);
48        try {
49
50            ListView listView = (ListView) findViewById(R.id.list_view);
51
52            List<String> items = new ArrayList<>();
53            JSONObject root = new JSONObject(json_string);
54
55            JSONArray array= root.getJSONArray("array");
56
57            this.setTitle(root.getString("title"));
58
59            for(int i=0;i<array.length();i++)
60            {
61                JSONObject object= array.getJSONObject(i);
62                items.add(object.getString("company"));
63            }
64
65            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
66                    android.R.layout.simple_list_item_1, items);
67
68            if (listView != null) {
69                listView.setAdapter(adapter);
70            }
71
72            JSONObject nested= root.getJSONObject("nested");
73            Log.d("TAG","flag value "+nested.getBoolean("flag"));
74
75        } catch (JSONException e) {
76            e.printStackTrace();
77        }
78
79    }
80}

我们已经遍历了JSONArray对象,并获取了每个子对象JSONObject中存在的字符串,并将它们添加到ListView中显示的[ArrayList](/community/tutorials/java-arraylist)中。使用以下命令更改应用程序名称:

1this.setTitle();

Android JSONObject示例输出

应用程序的输出如下所示。您可以在顶部的工具栏中看到标题名称已更改。Android JSONObject,JSON parsing in android app谷歌发布了一个用于JSON解析的群集库。我们将在后面的教程中实现这一点。GSON 是一个JAVA库,可以将Java对象转换为JSON,反之亦然。这结束了Android JSONObject教程。我们的目标是概述Android中的JSON解析,因为JSON是当今在服务器/Web应用程序之间传输数据的公认标准。当我们开发从服务器发送和接收数据的应用程序时,Android JSON解析将非常方便。您可以从下面的链接下载Android JSON解析项目。

下载Android JSON解析JSONObject项目

参考资料:官方Documentation

Published At
Categories with 技术
Tagged with
comments powered by Disqus