Android中的JSON详细总结

下面是关于“Android中的JSON详细总结”的攻略。

什么是JSON

JSON(JavaScript Object Notation)是一种数据格式,常用于网络传输数据。它是在JavaScript中创建的对象,但现在已经成为一种独立的数据交换格式。

与XML相比,JSON更加简单、轻量级。在Android开发中,JSON也是比较流行的一种数据格式。

JSON的基本语法

JSON由键值对组成,每个键值对用逗号分隔。键值对的键(或属性)必须是一个字符串,值则可以是数字、字符串、布尔值、数组、对象或null等。

以下是一个例子:

{
    "name": "Tom",
    "age": 18,
    "isMale": true,
    "hobbies": ["Swimming", "Basketball"],
    "address": {
        "city": "Beijing",
        "street": "Chaoyang Road"
    },
    "phoneNumbers": null
}

在这个例子中,我们可以看到:

  • name和isMale是字符串类型的键值对;
  • age是数字类型的键值对;
  • hobbies是数组类型的键值对;
  • address是对象类型的键值对;
  • phoneNumbers是null类型的键值对。

JSON的解析与生成

在Android中,我们可以使用内置的JSON库来完成JSON的解析与生成。该库提供了一系列方法,用于将JSON转换成Java对象,并将Java对象转换成JSON数据。

JSON的解析

在Android中,我们可以使用JSONObject和JSONArray类来解析JSON。

解析JSONObject

以下是一个例子,演示如何解析一个JSONObject:

String jsonString = "{\"name\": \"Tom\", \"age\": 18, \"isMale\": true}";
JSONObject jsonObject = new JSONObject(jsonString);
String name = jsonObject.getString("name"); // 获取字符串类型的属性
int age = jsonObject.getInt("age"); // 获取数字类型的属性
boolean isMale = jsonObject.getBoolean("isMale"); // 获取布尔类型的属性

解析JSONArray

以下是一个例子,演示如何解析一个JSONArray:

String jsonString = "[\"Swimming\", \"Basketball\"]";
JSONArray jsonArray = new JSONArray(jsonString);
String hobby1 = jsonArray.getString(0); // 获取数组中的第一个项
String hobby2 = jsonArray.getString(1); // 获取数组中的第二个项

JSON的生成

在Android中,我们可以使用JSONObject和JSONArray类来生成JSON。

生成JSONObject

以下是一个例子,演示如何生成一个JSONObject:

JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "Tom"); // 添加字符串类型的属性
jsonObject.put("age", 18); // 添加数字类型的属性
jsonObject.put("isMale", true); // 添加布尔类型的属性
String jsonString = jsonObject.toString(); // 将JSONObject转换为字符串

生成JSONArray

以下是一个例子,演示如何生成一个JSONArray:

JSONArray jsonArray = new JSONArray();
jsonArray.put("Swimming"); // 添加字符串类型的项
jsonArray.put("Basketball"); // 添加字符串类型的项
String jsonString = jsonArray.toString(); // 将JSONArray转换为字符串

示例说明

示例1:从URL中获取JSON并解析

以下是一个例子,演示如何从URL中获取JSON并解析:

public static String getJsonFromUrl(String url) throws IOException, JSONException {
    StringBuilder resultBuilder = new StringBuilder();
    InputStream inputStream = null;
    try {
        URL urlObj = new URL(url);
        HttpURLConnection connection = (HttpURLConnection) urlObj.openConnection();
        connection.setRequestMethod("GET");
        connection.setConnectTimeout(5000);
        connection.setReadTimeout(5000);
        connection.connect();
        if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
            inputStream = connection.getInputStream();
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                resultBuilder.append(line);
            }
        }
    } finally {
        if (inputStream != null) {
            inputStream.close();
        }
    }
    return resultBuilder.toString();
}

public static void parseJson(String jsonString) throws JSONException {
    JSONObject jsonObject = new JSONObject(jsonString);
    String cityName = jsonObject.getString("name");
    JSONArray jsonArray = jsonObject.getJSONArray("weather");
    JSONObject weatherJsonObj = jsonArray.getJSONObject(0);
    String weatherDesc = weatherJsonObj.getString("description");
    System.out.println("City name: " + cityName);
    System.out.println("Weather description: " + weatherDesc);
}

在这个例子中,我们首先通过getJsonFromUrl方法从URL中获取JSON字符串,然后通过parseJson方法解析JSON字符串,并输出结果。假设我们获取的JSON格式如下:

{
    "coord": {
        "lon": 139.6917,
        "lat": 35.6895
    },
    "weather": [
        {
            "id": 800,
            "main": "Clear",
            "description": "clear sky",
            "icon": "01d"
        }
    ],
    "base": "stations",
    "main": {
        "temp": 22.28,
        "feels_like": 22.3,
        "temp_min": 20,
        "temp_max": 26.67,
        "pressure": 1023,
        "humidity": 37
    },
    "visibility": 10000,
    "wind": {
        "speed": 1,
        "deg": 0
    },
    "clouds": {
        "all": 0
    },
    "dt": 1630723776,
    "sys": {
        "type": 2,
        "id": 2000106,
        "country": "JP",
        "sunrise": 1630713906,
        "sunset": 1630760171
    },
    "timezone": 32400,
    "id": 1850147,
    "name": "Tokyo",
    "cod": 200
}

我们可以看到,这个JSON包含了城市名和天气信息。程序会输出以下内容:

City name: Tokyo
Weather description: clear sky

示例2:将Java对象转换为JSON

以下是一个例子,演示如何将Java对象转换为JSON字符串:

class Person {
    private String name;
    private int age;
    private boolean isMale;
    private List<String> hobbies;
    private Address address;

    public Person(String name, int age, boolean isMale, List<String> hobbies, Address address) {
        this.name = name;
        this.age = age;
        this.isMale = isMale;
        this.hobbies = hobbies;
        this.address = address;
    }

    static class Address {
        private String city;
        private String street;

        public Address(String city, String street) {
            this.city = city;
            this.street = street;
        }
    }
}

public static void toJson(Person person) throws JSONException {
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("name", person.name);
    jsonObject.put("age", person.age);
    jsonObject.put("isMale", person.isMale);
    JSONArray jsonArray = new JSONArray();
    for (String hobby : person.hobbies) {
        jsonArray.put(hobby);
    }
    jsonObject.put("hobbies", jsonArray);
    JSONObject addressJsonObj = new JSONObject();
    addressJsonObj.put("city", person.address.city);
    addressJsonObj.put("street", person.address.street);
    jsonObject.put("address", addressJsonObj);
    System.out.println(jsonObject.toString());
}

在这个例子中,我们创建了一个Person对象,并将该对象转换成JSON字符串。假设Person对象的实例化代码如下:

Person person = new Person(
    "Tom", 
    18, 
    true, 
    Arrays.asList("Swimming", "Basketball"), 
    new Person.Address("Beijing", "Chaoyang Road")
);

程序会输出以下内容:

{
    "name": "Tom",
    "age": 18,
    "isMale": true,
    "hobbies": [
        "Swimming",
        "Basketball"
    ],
    "address": {
        "city": "Beijing",
        "street": "Chaoyang Road"
    }
}

在这个例子中,我们使用了JSON对象和JSON数组来生成JSON字符串。通过put方法将对象的属性添加到JSON对象中,并将JSON数组添加到JSON对象中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Android中的JSON详细总结 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • 浅谈C++的几种从键盘输入方式

    浅谈C++的几种从键盘输入方式 在C++中,从键盘获取用户输入是很常见的操作。本文将介绍几种常用的获取输入的方式。 1. cin cin是iostream库提供的标准输入流对象,它支持多种数据类型的输入。使用cin获取用户输入的方法是使用>>运算符。以下是一个简单的示例代码: #include <iostream> using nam…

    C 2023年5月23日
    00
  • C语言编程C++编辑器及调试工具操作命令详解

    C语言编程C++编辑器及调试工具操作命令详解 1. 编辑器 1.1 什么是编辑器 编辑器是一种用于编写程序源码的软件,常用的编辑器有Visual Studio Code、Sublime Text、Notepad++等。 1.2 Visual Studio Code Visual Studio Code是一款免费开源的文本编辑器,可以在Windows、Linu…

    C 2023年5月23日
    00
  • c++如何实现跳表(skiplist)

    跳表(skiplist)是一种随机化的数据结构,它允许快速查询一个有序序列中的元素,并且它的插入和删除操作具有相对较低的时间复杂度。下面我们将介绍如何使用C++实现跳表。 基本思路 跳表的基本思路是建立多层索引,即使用多级指针来跳过一些元素,在链表的基础上进行优化。第一层是原始链表,其他层则是链表的子集。每一层的元素数量越来越少,随着层数的增加,跳过元素的能…

    C 2023年5月23日
    00
  • 详解C#对XML、JSON等格式的解析

    详解C#对XML、JSON等格式的解析 XML解析 在C#中,可以通过System.Xml命名空间下的类库实现对XML格式的解析。主要的类包括: XmlDocument:表示一个XML文档,可以通过该类的实例对象进行读取、创建、编辑XML文档。 XmlNode:表示XML文档中的一个节点。 XmlElement:表示XML文档中的一个元素节点。 XmlAtt…

    C 2023年5月23日
    00
  • C++内嵌汇编示例详解

    对于C++内嵌汇编示例的详解,可以从以下几个方面进行讲解: 1.概述:什么是内嵌汇编 内嵌汇编是指将汇编代码嵌入到C或C++程序中的技术,可以直接在C++源代码中嵌入汇编语言,通过内嵌汇编可以利用汇编语言的精细化控制实现高效的代码。 2.内嵌汇编说明 在C++中内嵌汇编可以使用asm关键字来实现,类似于以下形式: asm (assembly content)…

    C 2023年5月23日
    00
  • 深入浅析C++ traits技术

    我们来详细讲解一下”C++ traits技术”的完整攻略。 什么是C++ traits技术 C++ traits是指通过模板技术将类型相关的信息抽象出来,从而使程序能够针对类型特征进行定制化的处理。 在C++中,traits 通常采用模板实现,其目的是为了让代码更加通用、可读并且可重用。 C++ traits 技术的分类 C++的 traits 技术一般分为…

    C 2023年5月22日
    00
  • 关于C/C++中可变参数的详细介绍(va_list,va_start,va_arg,va_end)

    关于C/C++中可变参数的详细介绍,一般涉及到四个主要的宏,它们分别是va_list,va_start,va_arg和va_end。下面我会详细介绍它们的用法和注意事项,并且提供两个示例。 1. va_list va_list是一个类型,用于存储可变参数的信息。声明方式如下: #include <stdarg.h> va_list arg_lis…

    C 2023年5月23日
    00
  • php中json_decode()和json_encode()的使用方法

    关于 PHP 中 JSON 数据的编码和解码,通常会使用两个函数 json_encode() 和 json_decode()。 json_encode() 的使用方法 json_encode() 函数是将 PHP 中的数据转为 JSON 字符串的方法。它的语法如下: json_encode($value, $options = 0, $depth = 512…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部