JSON,JSONObject 和JsonNode

本文介绍了JSON数据格式及其在Java中的应用,重点关注Jackson和FastJson这两个流行的JSON处理库,展示了如何使用它们进行Java对象与JSON字符串的序列化和反序列化,以及如何使用JavaBean和JsonNode进行JSON操作。
摘要由CSDN通过智能技术生成

1 JSON

JSON是一种非常通用和流行的数据格式,本质上一个字符串,通过定义一些字符串组织规则来表示键值对。规则如下

  1. 对象使用{}表示,其中使用:来分割键和值
    1. 键必须是字符串类型,用""包起来
    2. 值可以是值可以是字符串、数字、布尔值、对象、数组或null。
  2. 数组使用[]表示数组中的元素可以是字符串、数字、布尔值、对象、数组或null。
    举例说明
{
	"name": "xioaming",                     //键值对,string : string
	"age": 22.34,                           //键值对,string : float
	"fruits": ["apple", "pear", "grape"],   //键值对,string : array
	"hard": {                               //键值对,string : object
		"身高": 1.78,
		"工作": ["程序员", "健身教练"]
	}
}

2 在java中使用json

现在我们得到了一个JSON字符串了,但是我们的JAVA程序只是认为它是一个字符串,不懂得其中意义(如数据类型,键值对的对应关系),这时候java需要做一件事—反序列化,也就是将字符串变成java对象,便于操作。
不同的公司或者组织给我们提供了不同的JSON解析方案,其中著名的有

  1. Jackson是一个非常流行的JSON处理库,提供了高性能和灵活的JSON解析和生成功能。它可以将JSON数据映射到Java对象中,并将Java对象转换为JSON格式。Jackson还支持注解,可以用于进一步控制JSON与Java对象之间的映射关系。
  2. FastJson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
  3. org.json:
    org.json是Java提供的一个简单的JSON解析器和生成器。它包含在Java标准库中,并提供了解析和生成JSON数据的基本功能。虽然功能相对较简单,但对于简单的JSON操作,它是一个轻量级和易于使用的选择。

一般来说,这些解析方案提供了以下关于json的方法

  1. 序列化和反序列化(重点): 将JSON对象序列化为字符串,或将JSON字符串反序列化为对象。序列化是将数据对象转换为JSON字符串,反序列化是将JSON字符串转换为数据对象。
  2. 创建JSON对象: 可以使用编程语言提供的函数、类或库来创建JSON对象。通常,这些函数或方法接受键值对作为参数,用于指定JSON对象的属性和对应的值。
  3. 访问和修改JSON对象的属性: 通过键访问JSON对象的属性,并可以对其进行修改。可以使用编程语言提供的API来访问、读取和修改JSON对象的属性值。
  4. 遍历JSON数组: 遍历JSON数组中的元素,逐个访问和处理数组中的数据项。使用循环结构来遍历数组,根据索引或迭代器获取数组中的每个元素。
  5. 嵌套JSON操作: 处理嵌套的JSON结构,包括访问、修改和操作嵌套的对象或数组。可以使用递归、循环等方法来处理嵌套的JSON结构。

JSONObject使用方法(fastjson)
JsonMapper使用方法(Jackson)

另外需要注意一点,使用JsonNode的时候不要使用tostring,会多出来一个""

import lombok.Data;

/**
 * @Author ZhaoYongheng
 * @Date 2024-01-31 10:26
 */
@Data
public class Person {
    private String name;
    private String sex;
    private int age;
    public Person(String name, String sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public String getSex() {
        return sex;
    }
    public int getAge() {
        return age;
    }

}
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;

import java.io.IOException;

/**
 * @Author ZhaoYongheng
 * @Date 2024-01-31 10:25
 */
public class subTest1 {

    @Test
    public void EntityToJson() throws IOException {
        Person person = new Person("张三", "男", 25);
        System.out.println(person.toString());
        ObjectMapper objectMapper = new ObjectMapper();
        String jsonString = objectMapper.writeValueAsString(person);

        JsonNode jsonNode = objectMapper.readTree(jsonString);
        System.out.println(jsonNode.get("sex").toString());
        System.out.println(jsonNode.get("sex").asText());
        System.out.println(jsonString);
    }
}

在这里插入图片描述

JavaBean是一种Java语言写成的可重用组件,是指符合如下标准的Java类:

  • 类是公共的
  • 有一个无参的公共的构造器
  • 有属性,且有对应的get、set方法

用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用Java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。

  • 24
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Java中的JSON库将JSON字符串转换为JSONObject对象。例如,如果你使用的是org.json库,可以使用以下代码: ```java import org.json.*; // jsonStr为待转换的JSON字符串 JSONObject jsonObj = new JSONObject(jsonStr); ``` 如果你使用的是Jackson库,可以使用以下代码: ```java import com.fasterxml.jackson.databind.*; // jsonStr为待转换的JSON字符串 ObjectMapper mapper = new ObjectMapper(); JsonNode jsonObj = mapper.readTree(jsonStr); ``` 这些代码将JSON字符串解析为一个JSONObjectJsonNode对象,你可以使用这些对象来访问和操作JSON数据。 ### 回答2: 要将JSON字符串转换为JSONObject对象,可以使用Javajson库,例如GSON或者Jackson。以下是使用GSON库进行转换的示例代码: 首先,确保已经引入了GSON库的依赖。 接下来,在Java代码中,创建一个Gson对象,它将用于将JSON字符串转换为JSONObject对象,如下所示: ```java import com.google.gson.Gson; import com.google.gson.JsonObject; public class Main { public static void main(String[] args) { String jsonStr = "{\"name\":\"Alice\",\"age\":30,\"city\":\"北京\"}"; // 创建Gson对象 Gson gson = new Gson(); // 将JSON字符串转换为JSONObject对象 JsonObject jsonObject = gson.fromJson(jsonStr, JsonObject.class); // 获取JSONObject对象中的属性值 String name = jsonObject.get("name").getAsString(); int age = jsonObject.get("age").getAsInt(); String city = jsonObject.get("city").getAsString(); // 打印属性值 System.out.println("name: " + name); System.out.println("age: " + age); System.out.println("city: " + city); } } ``` 上述代码中,我们创建了一个JSON字符串,然后使用Gson库的`fromJson()`方法将其转换为JSONObject对象。通过`get()`方法可以获取JSONObject对象中的属性值,然后我们将其打印出来。 以上代码是使用GSON库进行JSON字符串转换的示例,如果使用其他的JSON库,可以根据相应库的API进行操作。 ### 回答3: 要将JSON字符串转换为JSONObject对象,需要使用Java中的JSON库,如json.org或者Gson。下面以Gson库为例,提供一个示例代码: 首先,需要导入相应的Gson库: import com.google.gson.Gson; import com.google.gson.JsonObject; 然后,使用以下代码将JSON字符串转换为JSONObject对象: String jsonString = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}"; Gson gson = new Gson(); JsonObject jsonObject = gson.fromJson(jsonString, JsonObject.class); 在上述代码中,首先定义了一个JSON字符串,然后创建一个Gson对象。通过调用gson.fromJson方法,传入JSON字符串和JsonObject.class作为参数,将JSON字符串转换为JsonObject对象。 最后,可以通过JsonObject对象的get方法来获取JSON中的具体字段值,例如: String name = jsonObject.get("name").getAsString(); int age = jsonObject.get("age").getAsInt(); String city = jsonObject.get("city").getAsString(); 在上述代码中,通过JsonObject对象的get方法,传入相应的字段名来获取对应的值,然后可以根据需要进行处理或者使用。 总之,通过使用JSON库,可以方便地将JSON字符串转换为JSONObject对象,然后可以通过该对象来获取和处理JSON中的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值