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

相关文章

  • SpringBoot 配置文件总结

    下面是关于SpringBoot配置文件的总结: SpringBoot 配置文件总结 SpringBoot 配置文件主要包含两种类型:application.properties和application.yml。 配置属性 SpringBoot 配置属性分为两种类型: 内置属性 自定义属性 内置属性是SpringBoot提供的默认配置属性,我们可以在配置文件中…

    Java 2023年5月31日
    00
  • JDK14的新特性NullPointerExceptions的使用

    下面是详细讲解“JDK14的新特性NullPointerExceptions的使用”的完整攻略。 什么是NullPointerExceptions NullPointerExceptions 是 Java 程序中最常见的错误之一,它通常会在代码中使用空引用时发生。在 JDK14 中,对于这个问题已经进行了一些新的改进,我们可以更加方便地处理这个问题。 如何使…

    Java 2023年5月27日
    00
  • Java实现登录和注册案例

    下面我将为您详细讲解Java实现登录和注册案例的完整攻略。我们分为以下几个步骤进行讲解: 搭建开发环境 创建用户实体类 创建用户数据访问对象(DAO) 创建用户服务(Service) 创建控制器(Controller) 配置数据库连接 创建用户表 实现注册功能 实现登录功能 接下来,我将为您详细讲解每一步的具体操作流程。 每个开发者需要有一台配有Java开发…

    Java 2023年5月19日
    00
  • 全网最详细Hutool工具详解

    全网最详细Hutool工具详解 Hutool是一个Java工具库,封装了一系列的工具类,包括字符串、集合、日期时间、加密解密、文件、图片处理、网络等等常用工具,简化了Java开发中的常见操作,提高了开发效率。 字符串工具 判断字符串是否为空 String str = null; boolean empty = StrUtil.isEmpty(str);//t…

    Java 2023年5月20日
    00
  • SSH框架网上商城项目第9战之添加和更新商品类别功能实现

    SSH框架网上商城项目第9战之添加和更新商品类别功能实现 本文介绍了如何实现网上商城项目中添加和更新商品类别的功能。我们使用SSH框架来开发此项目。在本文中,您将学习如何创建商品类别的实体类、DAO层、Service层和Action层,以及如何在网页中使用JavaScript和JQuery实现实时验证和提交表单。 创建商品类别的实体类 为了在数据库中存储商品…

    Java 2023年6月15日
    00
  • 给JavaBean赋默认值并且转Json字符串的实例

    如何给JavaBean赋默认值并且转Json字符串的实例? 在大多数情况下,我们都会为JavaBean的每个属性提供默认值,这个过程十分繁琐并且容易出错。在这种情况下,为JavaBean提供默认值并将其转换为JSON字符串是至关重要的。 以下是实现这个策略的完整攻略: 为JavaBean赋默认值 下面是一个名为Person.java的JavaBean示例,其…

    Java 2023年5月26日
    00
  • SpringBoot自动配置特点与原理详细分析

    一、SpringBoot自动配置特点与原理分析 自动配置原理 SpringBoot的自动配置背后的原理是,通过条件注解来根据已有的bean、属性和类路径等来做出判断,自动调整项目的配置。 自动配置特点 约定优于配置:SpringBoot的自动配置遵循约定优于配置的原则,框架尽量避免使用XML等外置文件进行配置,采用内置默认配置的方式进行配置。 基于条件注解:…

    Java 2023年5月15日
    00
  • JS版微信6.0分享接口用法分析

    下面我将详细讲解“JS版微信6.0分享接口用法分析”的完整攻略。 一、JS版微信6.0分享接口简介 JS版微信6.0分享接口是微信公众号提供的一种方式,允许网站开发者在网页端调用微信分享功能,从而使用户直接将网页内容分享到微信朋友圈、好友或者分组内的好友。 二、JS版微信6.0分享接口使用步骤 1. 引入JS文件 在HTML文件中的head标签内,加入如下代…

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