浅谈在Java中JSON的多种使用方式

浅谈在Java中JSON的多种使用方式

什么是JSON

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,其来源于JavaScript. 通常用于将结构化数据序列化为文本格式,可以轻松地在不同的系统中传递、存储和分析数据.

JSON将数据表达为键值对的集合,具有易于阅读和编写的文本格式,易于机器解析和生成,并且良好的网络传输性能.

在Java中JSON的多种使用方式

Java中有多种方法可以处理JSON数据,包括使用第三方库,使用Java内置库,或者手动解析JSON字符串.

使用第三方库

Java中有很多第三方库可以处理JSON数据,其中最流行的是Jackson和Gson. 这些库可以将JSON字符串转化为Java对象,或者将Java对象转化为JSON字符串.

  • 示例1:使用Jackson将JSON字符串转化为Java对象
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonDemo {

    public static void main(String[] args) throws Exception {
        String json = "{\"name\":\"Alice\",\"age\":20}";
        ObjectMapper mapper = new ObjectMapper();
        Person person = mapper.readValue(json, Person.class);
        System.out.println(person.getName() + ", " + person.getAge());
    }

    static class Person {
        private String name;
        private int age;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }
}
  • 示例2:使用Gson将Java对象转化为JSON字符串
import com.google.gson.Gson;

public class JsonDemo {

    public static void main(String[] args) {
        Person person = new Person();
        person.setName("Bob");
        person.setAge(25);
        Gson gson = new Gson();
        String json = gson.toJson(person);
        System.out.println(json);
    }

    static class Person {
        private String name;
        private int age;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }
}

使用Java内置库

Java 7及以上版本内置了javax.json包,可用于处理JSON数据.

  • 示例3:使用Java内置库将JSON字符串转化为Java对象
import javax.json.Json;
import javax.json.JsonObject;
import javax.json.JsonReader;
import java.io.StringReader;

public class JsonDemo {

    public static void main(String[] args) {
        String json = "{\"name\":\"Charlie\",\"age\":30}";
        JsonReader reader = Json.createReader(new StringReader(json));
        JsonObject object = reader.readObject();
        Person person = new Person();
        person.setName(object.getString("name"));
        person.setAge(object.getInt("age"));
        System.out.println(person.getName() + ", " + person.getAge());
    }

    static class Person {
        private String name;
        private int age;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }
}
  • 示例4:使用Java内置库将Java对象转化为JSON字符串
import javax.json.Json;
import javax.json.JsonObjectBuilder;

public class JsonDemo {

    public static void main(String[] args) {
        Person person = new Person();
        person.setName("Dave");
        person.setAge(35);
        JsonObjectBuilder builder = Json.createObjectBuilder();
        builder.add("name", person.getName()).add("age", person.getAge());
        String json = builder.build().toString();
        System.out.println(json);
    }

    static class Person {
        private String name;
        private int age;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }
}

手动解析JSON字符串

手动解析JSON字符串意味着需要使用Java字符或字符串处理方法来逐个读取和解析JSON字符串元素.

  • 示例5:手动解析JSON字符串
public class JsonDemo {

    public static void main(String[] args) {
        String json = "{\"name\":\"Emily\",\"age\":40}";
        int age = 0;
        String name = null;
        boolean lookingForAge = false;
        for (int i = 0; i < json.length(); i++) {
            char c = json.charAt(i);
            if (c == ':') {
                lookingForAge = !lookingForAge;
            } else if (c == ',' || c == '}') {
                if (lookingForAge) {
                    age = Integer.parseInt(json.substring(i + 1, json.indexOf(',', i)));
                } else {
                    name = json.substring(json.indexOf(':', i) + 2, i - 1);
                }
            }
        }
        System.out.println(name + ", " + age);
    }
}

小结

Java中有多种处理JSON的方式,包括使用第三方库、使用Java内置库、或者手动解析JSON字符串. 具体使用哪种方式取决于开发者的项目需求和个人喜好.

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈在Java中JSON的多种使用方式 - Python技术站

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

相关文章

  • SpringSecurity报错authenticationManager must be spec的解决

    针对Spring Security报错authenticationManager must be specified 的解决方案,一般来说可以从以下两方面入手: 1.在Spring Security配置文件中指定authenticationManager;2.在Spring Boot项目中添加配置类来注入authenticationManager。 1.指定…

    Java 2023年5月20日
    00
  • 微信 java 实现js-sdk 图片上传下载完整流程

    微信 Java 实现JS-SDK 图片上传下载完整流程 前置知识 在开发过程中,我们需要了解微信JS-SDK的基本使用方法和原理,了解微信开放平台的基础知识。同时,我们还需要通过Java语言来实现JS-SDK的图片上传下载功能。 实现过程 步骤一:申请应用密钥和JS-SDK权限 在微信开放平台上为自己的应用申请应用密钥,并在公众号后台开启JS-SDK权限。获…

    Java 2023年5月20日
    00
  • 方法区的作用是什么?

    以下是关于 Java 方法区的详细讲解和使用攻略: 方法区的作用是什么? Java 方法区是一种用于存储已加载类信息、常量、静态变量、即时编编译后的代码数据的内存区域。方法区是线程共享的,其大小可以通过 -XX:MetaspaceSize 参数进行设置。 方法区的使用攻略 使用 Java 方法区,需要注意以下几点: 在程序开发中,需要合理使用内存,避免出现内…

    Java 2023年5月12日
    00
  • jquery动态加载select下拉框示例代码

    为了让回答更加清晰明了,我将对话分为几个步骤进行讲解,如下: 确认需求 首先,在动手敲代码之前,我们需要清晰地明确自己的需求是什么。在这个场景中,我们需要实现一个“动态加载select下拉框”的功能。具体来说,我们希望在页面刚加载完成时,下拉框中的选项列表是空的,当用户触发某个事件(比如点击某个按钮)后,网页通过调用ajax请求获取数据,并动态地将这些数据填…

    Java 2023年6月15日
    00
  • C#结合数据库实现验证识别ID卡内容的方法

    C#结合数据库实现验证识别ID卡内容的方法 实现一种基于C#语言和数据库的ID卡内容验证识别方法,能够方便地对ID卡进行读取、保存、查询、验证等操作,可以提高办公自动化、信息管理和安全性水平。下面将分别介绍实现步骤、示例代码和注意事项。 实现步骤 建立数据库 使用Microsoft SQL Sever等数据库软件,创建一个名为IDCardInfo的数据库。新…

    Java 2023年5月19日
    00
  • Java编程之文件读写实例详解

    《Java编程之文件读写实例详解》的攻略如下: 第一步:导入IO库 首先要在Java代码中导入IO库,这个库包括文件读写所需的各种类。 import java.io.*; 第二步:读取文件 使用BufferedReader类读取文本文件,具体方法如下: try{ BufferedReader reader = new BufferedReader(new F…

    Java 2023年5月20日
    00
  • Java中JSONObject与JSONArray的使用区别详解

    下面是“Java中JSONObject与JSONArray的使用区别详解”的完整攻略: 1. 什么是JSONObject和JSONArray? 在Java中,JSONObject和JSONArray是用于处理JSON数据的两个重要类。 JSONObject表示JSON对象,即一个存储键值对的容器,每个键值对都是由一个字符串作为键和一个值组成的。JSON对象的…

    Java 2023年5月26日
    00
  • 详解SpringBoot 创建定时任务(配合数据库动态执行)

    先来介绍一下 SpringBoot 这个框架。SpringBoot 是一款基于 Spring 框架的快速开发框架,能够帮助开发者快速搭建 Spring 应用,极大地提高了开发效率。在 SpringBoot 中,我们可以非常简单地创建定时任务并进行动态执行,下面是详解 SpringBoot 创建定时任务(配合数据库动态执行)的攻略: 一、引入相关依赖 在创建我…

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