Java读取本地json文件及相应处理方法

下面是详细讲解“Java读取本地json文件及相应处理方法”的完整攻略。

1. 概述

在Java中,读取本地的JSON文件并对其进行相应的处理对于实现一些功能非常有帮助。Java本身提供了多种读取文件的方式,其中最常用的是使用FileInputStream和BufferedInputStream,同时读取JSON文件的方法包括使用JSON.parseObject方法和Gson解析库。

2. 读取JSON文件的基本步骤

步骤如下:

  1. 使用FileInputStream和BufferedInputStream读取JSON文件,可以使用下面的代码:

java
File file = new File("example.json");
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);

  1. 构建一个ByteArrayOutputStream对象,将读取到的文件内容写入到byte数组中,可以使用下面的代码:

java
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while((len = bis.read(buffer)) > 0){
bos.write(buffer, 0, len);
}
bis.close();
fis.close();
bos.flush();
byte[] byteArray = bos.toByteArray();

  1. 将byte数组转换为JSON格式的字符串,可以使用下面的代码:

java
String content = new String(byteArray, StandardCharsets.UTF_8);

  1. 将JSON字符串解析成JSON对象,可以使用下面的代码:

java
JSONObject jsonObject = JSON.parseObject(content);

  1. 对解析的JSON对象进行相应的处理即可。

3. 两个示例

下面分别介绍两个示例:

示例1:读取本地JSON文件并输出

  1. 新建一个example.json文件,文件内容如下:

json
{
"name": "Tom",
"age": 18,
"hobby": [
"singing",
"dancing",
"swimming"
]
}

  1. 将该文件读取并输出:

java
File file = new File("example.json");
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while((len = bis.read(buffer)) > 0){
bos.write(buffer, 0, len);
}
bis.close();
fis.close();
bos.flush();
byte[] byteArray = bos.toByteArray();
String content = new String(byteArray, StandardCharsets.UTF_8);
JSONObject jsonObject = JSON.parseObject(content);
System.out.println(jsonObject);

输出结果如下:

{"hobby":["singing","dancing","swimming"],"name":"Tom","age":18}

示例2:将本地JSON文件转换为Java对象

  1. 新建一个Person.java类,包含name、age和hobby三个属性,如下:

```java
public class Person {
private String name;
private int age;
private List hobby;

   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 List<String> getHobby() {
       return hobby;
   }

   public void setHobby(List<String> hobby) {
       this.hobby = hobby;
   }

}
```

  1. 将example.json文件转换为Person对象:

java
File file = new File("example.json");
FileInputStream fis = new FileInputStream(file);
BufferedInputStream bis = new BufferedInputStream(fis);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while((len = bis.read(buffer)) > 0){
bos.write(buffer, 0, len);
}
bis.close();
fis.close();
bos.flush();
byte[] byteArray = bos.toByteArray();
String content = new String(byteArray, StandardCharsets.UTF_8);
JSONObject jsonObject = JSON.parseObject(content);
Person person = new Person();
person.setName(jsonObject.getString("name"));
person.setAge(jsonObject.getIntValue("age"));
person.setHobby(jsonObject.getJSONArray("hobby").toJavaList(String.class));
System.out.println(person.getName());
System.out.println(person.getAge());
System.out.println(person.getHobby());

输出结果如下:

Tom
18
[singing, dancing, swimming]

4. 总结

以上就是Java读取本地JSON文件及相应处理方法的完整攻略,通过本文介绍的方法,你可以轻松地读取本地JSON文件,并对其进行相应的处理。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java读取本地json文件及相应处理方法 - Python技术站

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

相关文章

  • Spring Boot + thymeleaf 实现文件上传下载功能

    下面我将详细讲解“Spring Boot + Thymeleaf 实现文件上传下载功能”的完整攻略。 准备工作 在开始前,请确保你已经具备以下环境: JDK1.8及以上 Maven 3.0及以上 项目搭建 建立一个 Spring Boot 项目 可以通过 Spring Initializr 快速搭建,选择 Web 依赖和 Thymeleaf 模板引擎即可。 …

    Java 2023年6月15日
    00
  • 推荐一款 IntelliJ IDEA 神级插件,由 ChatGPT 团队开发,免费使用,堪称辅助神器!

    来源:https://blog.csdn.net/m0_64880608/article/details/130201349 什么是Bito? Bito是一款在IntelliJ IDEA编辑器中的插件,Bito插件是由ChatGPT团队开发的,它是ChatGPT团队为了提高开发效率而开发的一款工具。 ChatGPT团队是一支专注于自然语言处理技术的团队,他们…

    Java 2023年5月4日
    00
  • SpringBoot 集成 Quartz + MySQL

    Quartz 简单使用Java SpringBoot 中,动态执行 bean 对象中的方法 源代码地址 => https://gitee.com/VipSoft/VipBoot/tree/develop/vipsoft-quartz 工作原理解读 只要配置好 DataSource Quartz 会自动进行表的数据操作, 添加 Quartz Job 任务…

    Java 2023年4月18日
    00
  • Jackson序列化丢失泛型的解决

    在Java中,使用Jackson库进行序列化和反序列化是非常常见的。然而,当我们使用泛型时,Jackson序列化可能会丢失泛型信息,导致反序列化时出现问题。在本文中,我们将详细讲解如何解决Jackson序列化丢失泛型的问题,并提供两个示例来说明如何使用这些方法。 问题描述 当我们使用泛型时,Jackson序列化可能会丢失泛型信息。例如,考虑以下示例: pub…

    Java 2023年5月18日
    00
  • 详解maven配置多仓库的方法示例

    下面是详解maven配置多仓库的方法示例的攻略。包含以下内容: 配置的基本概念 配置方式示例一:配置私有maven仓库 配置方式示例二:配置多个maven中心仓库 配置的基本概念 Maven的依赖系统是基于仓库的概念实现的,即Maven插件会到某个公共或私有仓库中查找外部依赖包,比如我们常见的jcenter、mavenCentral仓库等。从而减少了开发者的…

    Java 2023年5月19日
    00
  • java 键盘输入的多种实现方法

    关于“Java键盘输入的多种实现方法”的攻略,下面就给您详细介绍: 使用 Scanner 类的 next() 方法进行输入 Scanner 是一个内置于 JDK 的类,专门用于输入处理。首先需要导入 java.util.Scanner 类。 示例代码: import java.util.Scanner; public class KeyboardInputD…

    Java 2023年5月18日
    00
  • java中有关构造方法中的输出

    Java中的构造方法是一个特殊的方法,它用于创建并初始化一个对象时被调用。在构造方法中,我们可以执行各种初始化任务,如设置对象的默认属性、分配内存等。构造方法是在对象创建时自动调用的,并且和类名称相同。在构造方法中,我们可以输出信息来验证对象的创建和初始化过程。 在Java中,我们可以使用System.out.println()方法来输出消息。构造方法中输出…

    Java 2023年5月26日
    00
  • Spring面试题50道,应该至少答对30个(附答案)

    这里是详细讲解“Spring面试题50道,应该至少答对30个(附答案)”的完整攻略。 1. 确认面试范围 在开始准备Spring面试题之前,我们需要先确认面试的范围。一般来说,Spring框架包含了很多不同的子框架和模块,如Spring Boot、Spring MVC、Spring Data等等。因此,在准备面试之前我们需要明确面试官询问的是哪个子框架或模块…

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