浅谈在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日

相关文章

  • Java简单实现定时器

    一、Java简单实现定时器 1. 实现原理 Java实现定时器的原理是通过Java语言自带的Timer和TimerTask类来完成的。Timer类可以让我们在一定的时间间隔内执行任务,而TimerTask则是具体要执行的任务。 2. 使用方法 2.1 创建定时器 Timer timer = new Timer(); 2.2 创建任务 class Task e…

    Java 2023年5月18日
    00
  • Android开发中的文件操作工具类FileUtil完整实例

    下面我会详细讲解“Android开发中的文件操作工具类FileUtil完整实例”的攻略,包含以下几个方面的内容: 简介 文件读取 文件写入 文件复制 文件删除 示例说明 结论 1. 简介 在Android开发中,文件操作时常遇到,因此可以写一个工具类封装常用的文件操作,方便进行文件操作。 2. 文件读取 使用FileInputStream对象打开文件,然后使…

    Java 2023年6月15日
    00
  • 详解Java并发编程基础之volatile

    下面我将详细讲解“详解Java并发编程基础之volatile”的攻略。首先,我们需要了解volatile的作用。 什么是volatile 在Java中,一个变量被声明为volatile,意味着它是一个“易变的”变量。它告诉编译器和JVM,这个变量在任何时刻都可能被其它线程修改,因此需要特别处理。 volatile的应用场景 volatile主要用于保证变量的…

    Java 2023年5月19日
    00
  • 一个开发人员眼中的JSP技术(上)

    下面是一个详细的攻略: 什么是JSP技术? JSP(JavaServer Pages)是一种基于Java语言的web开发技术,它是由Servlets衍生出来的一种技术。它允许将Java代码插入到HTML页面中,使得页面具备动态生成内容的能力。相比于Servlets,JSP技术更加容易开发,并且更适合于构建动态网站。这是因为在JSP中可以通过EL表达式、自定义…

    Java 2023年6月15日
    00
  • Java实现时间日期格式转换示例

    我来为你详细讲解Java实现时间日期格式转换的完整攻略。 什么是时间日期格式转换? 在Java开发中,经常需要对时间日期进行格式转化。例如,将日期对象转化为指定格式的字符串,或将字符串转化为日期对象,然后才能进行后续的业务处理。时间日期格式转换涉及到Java中日期类库的使用,如java.util.Date和java.time.LocalDateTime等。 …

    Java 2023年5月20日
    00
  • Springboot集成jdbcTemplate过程解析

    下面就是Springboot集成jdbcTemplate的完整攻略。 简介 jdbcTemplate是Spring框架提供的对JDBC操作的封装,可以大大减少项目中JDBC代码的编写量,提高开发效率。Springboot集成jdbcTemplate非常简单,可以通过简单的配置即可完成。 配置依赖 首先,在Springboot项目中引入jdbcTemplate…

    Java 2023年5月20日
    00
  • java中maven下载和安装步骤说明

    下面是关于Java中Maven下载和安装步骤的完整攻略。 简介 Maven是一款用于项目管理和自动化构建的工具。它能够自动化构建、测试、打包Java应用程序,并能够管理应用程序的依赖关系及其版本。在Java开发过程中,Maven是极其重要的工具之一。 下载 在官方网站(https://maven.apache.org/download.cgi) 下载最新版本…

    Java 2023年5月19日
    00
  • Sprint Boot @EnableAutoConfiguration使用方法详解

    Spring Boot中@EnableAutoConfiguration的作用与使用方法 在Spring Boot中,@EnableAutoConfiguration注解用于启用自动配置。它可以自动配置Spring Boot应用程序中的各种组件,包括数据源、Web MVC、安全性等。 作用 @EnableAutoConfiguration注解的作用是启用自动…

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