您的位置:

Java 返回 JSON 字符串的使用与解析

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,以文本的形式进行序列化,被广泛应用于数据请求与响应,客户端和服务器之间的数据交换等场景。Java 作为一种非常流行的编程语言,同样也提供了非常强大的 JSON 库,使得在 Java 端对 JSON 数据的使用和解析变得更加简单、方便。在本篇文章中,我们将介绍如何在 Java 中生成 JSON 数据,以及如何解析 JSON 数据。

一、Java 返回 JSON 字符串的基本使用

Java JSON API 库提供了丰富的 API 来生成和解析 JSON 数据。其中最常用的是 json-simple 库和 Jackson 库。在很多应用场景下,我们需要将 Java 对象转化为 JSON 字符串,然后发送到前端。在这种情况下,我们可以使用 json-simple 库来生成 JSON 字符串。

首先,我们需要在 Maven 依赖中加入 json-simple 库的引用:

<dependency>
    <groupId>com.googlecode.json-simple</groupId>
    <artifactId>json-simple</artifactId>
    <version>1.1.1</version>
</dependency>

接下来,我们可以使用 json-simple 库的 JSONObject 类来生成 JSON 字符串。下面是一个例子:

import org.json.simple.JSONObject;

public class JsonExample {
    public static void main(String[] args) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name", "Lucy");
        jsonObject.put("age", 18);
        jsonObject.put("email", "lucy@example.com");
        String jsonString = jsonObject.toJSONString();
        System.out.println(jsonString);
    }
}

在这个例子中,我们使用 JSONObject 对象创建了一个 JSON 对象,然后向其中添加了三个属性名/属性值对,最后将其转化为 JSON 字符串并输出。生成的 JSON 字符串如下:

{"email":"lucy@example.com","name":"Lucy","age":18}

二、JAVA 返回 JSON 字符串的最大长度

在实际的开发中,我们经常会遇到生成非常大的 JSON 字符串的情况。对于 json-simple 库而言,在转化 JSON 对象为字符串的时候,是递归调用每一个属性值的 toString() 方法,因此,当 Java 对象树非常大时,字符串拼接的性能将变得非常低。如果 JSON 字符串较大时,孕育暴内存增长,最后导致内存溢出。在处理大量数据时,我们可以选择使用高效的 Jackson 库来避免这种情况。

在使用 Jackson 库时,我们需要在 Maven 依赖中加入 jackson-core 和 jackson-databind 库的引用:

<dependency>
     <groupId>com.fasterxml.jackson.core</groupId>
     <artifactId>jackson-core</artifactId>
     <version>2.9.10</version>
</dependency>
 
<dependency>
     <groupId>com.fasterxml.jackson.core</groupId>
     <artifactId>jackson-databind</artifactId>
     <version>2.9.10.1</version>
</dependency>

接下来,我们可以使用 ObjectMapper 类将 Java 对象转换为 JSON 字符串。下面是一个例子:

import java.io.IOException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonExample {
    public static void main(String[] args) throws IOException {
        ObjectMapper objectMapper = new ObjectMapper();
        User user = new User("Lucy", 18, "lucy@example.com");
        String jsonString = objectMapper.writeValueAsString(user);
        System.out.println(jsonString);
    }
}

class User {
    private String name;
    private int age;
    private String email;
    public User(String name, int age, String email) {
        this.name = name;
        this.age = age;
        this.email = email;
    }
    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;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
}

在这个例子中,我们使用 ObjectMapper 对象将 User 对象转换为 JSON 字符串,并输出。生成的 JSON 字符串如下:

{"name":"Lucy","age":18,"email":"lucy@example.com"}

三、JAVA 解析 JSON 字符串

除了将 Java 对象转换为 JSON 字符串,我们同样需要将 JSON 字符串进行解析,得到其中的 Java 对象。对于 json-simple 库而言,我们可以直接使用其提供的 JSONParser 对象来进行解析,并使用 JSONObject 对象来进行操作。下面是一个例子:

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class JsonExample {
    public static void main(String[] args) throws ParseException {
        String jsonString = "{\"name\":\"Lucy\",\"age\":18,\"email\":\"lucy@example.com\"}";
        JSONParser jsonParser = new JSONParser();
        JSONObject jsonObject = (JSONObject)jsonParser.parse(jsonString);
        String name = (String)jsonObject.get("name");
        long age = (Long)jsonObject.get("age");
        String email = (String)jsonObject.get("email");
        System.out.println("name: " + name);
        System.out.println("age: " + age);
        System.out.println("email: " + email);
    }
}

在这个例子中,我们将 JSON 字符串解析为 JSONObject 对象,然后使用 get() 方法来获取其中的属性值,并输出。输出结果如下:

name: Lucy
age: 18
email: lucy@example.com

Jackson 库同样提供了非常强大的 API 来解析 JSON 数据。它可以将 JSON 数据转换为不同类型的 Java 对象,例如 List、Map 或自定义的 Java 对象。下面是一个解析 JSON 数据到自定义 Java 对象的例子:

import java.io.IOException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonExample {
    public static void main(String[] args) throws IOException {
        String jsonString = "{\"name\":\"Lucy\",\"age\":18,\"email\":\"lucy@example.com\"}";
        ObjectMapper objectMapper = new ObjectMapper();
        User user = objectMapper.readValue(jsonString, User.class);
        System.out.println("name: " + user.getName());
        System.out.println("age: " + user.getAge());
        System.out.println("email: " + user.getEmail());
    }
}

class User {
    private String name;
    private int age;
    private String email;
    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;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
}

在这个例子中,我们使用 ObjectMapper 对象将 JSON 字符串转换为 User 对象,并输出。输出结果和之前相同。

结语

本文介绍了如何在 Java 中生成 JSON 字符串并解析,分别使用了 json-simple 库和 Jackson 库。希望对大家在实际开发中使用 JSON 数据有所帮助。

Java 返回 JSON 字符串的使用与解析

2023-05-18
core解析json的笔记(c json解析)

本文目录一览: 1、如何解析json中map数据 2、fasterxml.jackson.core.jsonparser.feature是哪个jar包的 3、spring mvc 怎么获取json 4

2023-12-08
cjson字符串长度,cjson解析json字符串

2022-11-24
重学java笔记,java笔记总结

2022-11-23
java基础知识学习笔记一,Java基础笔记

2022-11-21
Java字符串转JSON字符串

2023-05-20
json字符串转clob(json字符串转换为Json对象

本文目录一览: 1、如何把这样的json串转换成对象 2、oracle clob xml json 3、java中json字符串怎么转json对象 4、如何把一个json文件转换成字符串 5、Orac

2023-12-08
json解析php返回的数据(php解析json数组字符串)

本文目录一览: 1、如何在PHP中返回Json数据 2、php获得api返回的json数据后,如何解析? 3、php 怎么解释返回的json数据 如何在PHP中返回Json数据 概述不对。返回json

2023-12-08
javajson,java解析json字符串数组

2023-01-08
java笔试题,JAVA笔试题压缩字符串

2023-01-04
使用PHP返回JSON数据

一、php返回json格式 在Web开发中,JSON是一种广泛使用的数据格式,其简洁性和可读性都非常高,能够被众多编程语言所支持。PHP也无疑是其中之一,在PHP中可以轻松地将数组转换为JSON格式的

2023-12-08
java复杂json报文(解析复杂的json字符串)

本文目录一览: 1、用java怎么解析复杂的JSON 2、Java的json反序列化:Java数据类可以和json数据结构不一致吗? 3、怎样利用java生成json复杂对象 4、怎么用java对象表

2023-12-08
Python中json字符串与json对象转换详解

2023-05-20
php解析返回的json,php返回值

本文目录一览: 1、如何在PHP中返回Json数据 2、php获得api返回的json数据后,如何解析? 3、php 怎么解释返回的json数据 4、php解析返回的json 如何在PHP中返回Jso

2023-12-08
包含python返回json函数的词条

本文目录一览: 1、Python爬虫(七)数据处理方法之JSON 2、【Python】浅谈python中的json 3、如何使用 Python 得到网页返回正确的 Json 数据 4、python r

2023-12-08
解析json生成java类(java如何解析json字符串)

本文目录一览: 1、如何根据json格式生成java bean对象 2、怎样把JSON对象快速的转成java对象 3、如何从JSON数据创建Java类 如何根据json格式生成java bean对象

2023-12-08
java学习笔记(java初学笔记)

2022-11-14
关于python的json模块使用的信息

本文目录一览: 1、python之jsonpath模块 2、python3 如果取json内容,谢谢 3、如何用python处理json文件 4、py3笔记8:json结构的校验 5、【Python】

2023-12-08
我php返回的json是字符串(php json encod

本文目录一览: 1、php curl 获取json 获取到的结果 怎么是string 2、后端php那里接收到前端post给的json为什么会是转义字符串格式 3、php文件jsonp返回字符串格式

2023-12-08
curl对返回的json(curl 返回结果)

本文目录一览: 1、php curl 怎样可以返回 json的数据? 2、关于curl返回值问题,怎么返回的html,希望返回json格式.tp3.2 3、shell curl 返回值 是什么意思 p

2023-12-08