c语言编程笔录

首页 >   > 笔记大全

笔记大全

利用Java怎么实现一个解析Json功能

更新时间:2023-12-28

第一段

JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。因为在很多场合中需要将数据作为参数传递,在大多数编程语言中都内置了 JSON 的解析器,Java 语言也提供了自己的 JSON 解析库。本段将通过一个简单的例子,展示如何利用 com.google.code.gson 库实现 JSON 数据的解析,并对代码进行解释。

    String jsonString = "{\"name\":\"Tom\",\"age\":\"25\",\"address\":[{\"home\":\"street 3\",\"city\":\"NYC\"},{\"home\":\"lane 5\",\"city\":\"LA\"}]}";
    JsonObject jsonObject = new JsonParser().parse(jsonString).getAsJsonObject();
    String name = jsonObject.get("name").getAsString();
    int age = jsonObject.get("age").getAsInt();
    JsonArray addresses = jsonObject.getAsJsonArray("address");
    List homeAddresses = new ArrayList<>();
    List cities = new ArrayList<>();

    for (JsonElement address : addresses) {
        JsonObject addressObject = address.getAsJsonObject();
        homeAddresses.add(addressObject.get("home").getAsString());
        cities.add(addressObject.get("city").getAsString());
    }

第二段

在上面的例子中,先定义一个 JSON 字符串,JSON 解析器将其解析成一个 JsonObject 对象。JsonObject 对象是一个 HashMap 集合对象,同时具有 JsonObject 对象的特有操作,可以对其进行其他更细化的操作。在 JsonObject 对象中,可以根据 key 取到对应的 value,例如,获取其中的 name 和 age 字段。在获取 address 字段时,由于其是一个 JSON 数组,所以需要先将其转换为 JsonArray 对象,然后才能对其进行遍历,遍历过程中通过 getAsJsonObject() 方法获取 JsonArray 中的 JsonObject 对象,再取出其中的 home 字段和 city 字段。

    {
        "name": "Tom",
        "age": "25",
        "address": [
            {
                "home": "street 3",
                "city": "NYC"
            },
            {
                "home": "lane 5",
                "city": "LA"
            }
        ]
    }

第三段

在解析 JSON 数据时,常常需要用到模型类。模型类是用来存储数据的类,可以将解析出来的 JSON 数据赋值给模型类的字段,以此方便对数据的操作。下面是一个示例代码,展示如何将 JSON 数据转换成带有模型类的 List 集合。

public class Person {
    private String name;
    private int age;
    private List
addressList; // 构造函数,getter 和 setter 略 } public class Address { private String home; private String city; // 构造函数,getter 和 setter 略 } // 将 JSON 字符串解析成带有模型类的 List 集合 Gson gson = new Gson(); Type listType = new TypeToken>(){}.getType(); List personList = gson.fromJson(jsonString, listType);

第四段

在上面的例子中,定义两个模型类 —— Person 和 Address。Person 类中有一个名为 addressList 的 List 集合,其内部存放的是 Address 对象。在解析 JSON 数据时,使用 Gson 的 fromJson() 方法,直接将 JSON 字符串转换为带有模型类的 List 集合。其中,TypeToken 用来表示带有泛型的类,getType() 方法用来获取实际类型的 Type 对象。通过这种方式,可以方便地将 JSON 数据转换为带有模型类的 Java 对象,进一步进行操作。