Java读取json数据并存入数据库的操作代码

下面是Java读取Json数据并存入数据库的操作代码的攻略,包含以下四个步骤:

  1. 构建Json数据对象
  2. 读取Json数据
  3. 解析Json数据
  4. 将数据存入数据库

下面进行详细讲解。

步骤一:构建Json数据对象

使用Java构建Json对象可以使用json库的JSONObject类来构建。首先需要导入相应的依赖:

<dependency>
    <groupId>org.json</groupId>
    <artifactId>json</artifactId>
    <version>20211205</version>
</dependency>

然后构建Json对象可以这样写:

import org.json.*;

JSONObject jsonObj = new JSONObject();
jsonObj.put("name", "Alice");
jsonObj.put("age", 18);

步骤二:读取Json数据

在读取Json数据之前,需要先将Json数据读入内存。可以从文件或者网络等载体中读入Json数据:

import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;

// 从文件中读取Json数据
String jsonStr = new String(Files.readAllBytes(Paths.get("data.json")), StandardCharsets.UTF_8);

// 从URL中读取Json数据
URL url = new URL("http://example.com/data.json");
URLConnection conn = url.openConnection();
InputStream input = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
String jsonStr = reader.lines().collect(Collectors.joining("\n"));

步骤三:解析Json数据

解析Json数据可以使用json库的JSONObject和JSONArray类来解析。具体方式取决于Json数据的结构。假设Json数据的格式如下:

{
  "name": "Alice",
  "age": 18,
  "address": {
    "city": "Shanghai",
    "street": "Renmin Rd."
  },
  "scores": [80, 90, 95]
}

可以这样解析:

JSONObject jsonObj = new JSONObject(jsonStr);

String name = jsonObj.getString("name");
int age = jsonObj.getInt("age");

JSONObject address = jsonObj.getJSONObject("address");
String city = address.getString("city");
String street = address.getString("street");

JSONArray scores = jsonObj.getJSONArray("scores");
List<Integer> scoreList = new ArrayList<>();
for (int i = 0; i < scores.length(); i++) {
    scoreList.add(scores.getInt(i));
}

步骤四:将数据存入数据库

将数据存入数据库可以使用JDBC或者ORM框架。这里以JDBC为例。假设要将上面解析出来的数据存入一个名为"person"的表中,表结构如下:

Field Type Null Key Default Extra
name varchar(255) NO NULL
age int(11) NO NULL
city varchar(255) YES NULL
street varchar(255) YES NULL
score int(11) YES NULL

可以这样写JDBC代码:

import java.sql.*;

String url = "jdbc:mysql://localhost:3306/test?useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai";
String username = "root";
String password = "root";

try (Connection conn = DriverManager.getConnection(url, username, password);
     PreparedStatement stmt = conn.prepareStatement("INSERT INTO person (name, age, city, street, score) VALUES (?, ?, ?, ?, ?)")) {

    stmt.setString(1, name);
    stmt.setInt(2, age);
    stmt.setString(3, city);
    stmt.setString(4, street);

    for (int score : scoreList) {
        stmt.setInt(5, score);
        stmt.executeUpdate();
    }

} catch (SQLException e) {
    e.printStackTrace();
}

这样就完成了将Json数据存入数据库的操作。下面给出两个示例:

示例一

假设Json数据如下:

{
  "name": "Tom",
  "age": 23,
  "scores": [80, 78, 92]
}

通过上述步骤完成该Json数据的读取、解析并存入数据库的完整代码如下:

import org.json.*;

import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.sql.*;
import java.util.*;
import java.util.stream.Collectors;

public class Example1 {
    public static void main(String[] args) {
        // 从文件中读取Json数据
        String jsonStr = "{\"name\": \"Tom\", \"age\": 23, \"scores\": [80, 78, 92]}";

        // 构建Json对象
        JSONObject jsonObj = new JSONObject(jsonStr);

        // 解析Json对象
        String name = jsonObj.getString("name");
        int age = jsonObj.getInt("age");

        JSONArray scores = jsonObj.getJSONArray("scores");
        List<Integer> scoreList = new ArrayList<>();
        for (int i = 0; i < scores.length(); i++) {
            scoreList.add(scores.getInt(i));
        }

        // 存储数据到数据库
        String url = "jdbc:mysql://localhost:3306/test?useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai";
        String username = "root";
        String password = "root";

        try (Connection conn = DriverManager.getConnection(url, username, password);
             PreparedStatement stmt = conn.prepareStatement("INSERT INTO person (name, age, score) VALUES (?, ?, ?)")) {

            stmt.setString(1, name);
            stmt.setInt(2, age);

            for (int score : scoreList) {
                stmt.setInt(3, score);
                stmt.executeUpdate();
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

执行完该程序后,可以在MySQL数据库中查看如下数据:

name age city street score
Tom 23 NULL NULL 80
Tom 23 NULL NULL 78
Tom 23 NULL NULL 92

示例二

假设Json数据如下:

{
  "name": "Jerry",
  "age": 25,
  "address": {
    "city": "Beijing",
    "street": "Haidian"
  },
  "scores": [85, 92, 88, 90]
}

通过上述步骤完成该Json数据的读取、解析并存入数据库的完整代码如下:

import org.json.*;

import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.sql.*;
import java.util.*;
import java.util.stream.Collectors;

public class Example2 {
    public static void main(String[] args) {
        // 从文件中读取Json数据
        String jsonStr = "{\"name\": \"Jerry\", \"age\": 25, \"address\": {\"city\": \"Beijing\", \"street\": \"Haidian\"}, \"scores\": [85, 92, 88, 90]}";

        // 构建Json对象
        JSONObject jsonObj = new JSONObject(jsonStr);

        // 解析Json对象
        String name = jsonObj.getString("name");
        int age = jsonObj.getInt("age");

        JSONObject address = jsonObj.getJSONObject("address");
        String city = address.getString("city");
        String street = address.getString("street");

        JSONArray scores = jsonObj.getJSONArray("scores");
        List<Integer> scoreList = new ArrayList<>();
        for (int i = 0; i < scores.length(); i++) {
            scoreList.add(scores.getInt(i));
        }

        // 存储数据到数据库
        String url = "jdbc:mysql://localhost:3306/test?useSSL=false&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai";
        String username = "root";
        String password = "root";

        try (Connection conn = DriverManager.getConnection(url, username, password);
             PreparedStatement stmt = conn.prepareStatement("INSERT INTO person (name, age, city, street, score) VALUES (?, ?, ?, ?, ?)")) {

            stmt.setString(1, name);
            stmt.setInt(2, age);
            stmt.setString(3, city);
            stmt.setString(4, street);

            for (int score : scoreList) {
                stmt.setInt(5, score);
                stmt.executeUpdate();
            }

        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

执行完该程序后,可以在MySQL数据库中查看如下数据:

name age city street score
Jerry 25 Beijing Haidian 85
Jerry 25 Beijing Haidian 92
Jerry 25 Beijing Haidian 88
Jerry 25 Beijing Haidian 90

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java读取json数据并存入数据库的操作代码 - Python技术站

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

相关文章

  • java中ArrayList的两种排序方法实例

    接下来我将详细介绍Java中ArrayList的两种排序方法实例,步骤如下: 1. ArrayList排序的基本概念 在介绍排序方法之前,我们需要了解一些基本概念。ArrayList是Java API中的一个类,它用于存储和操作一系列对象。当我们创建一个ArrayList时,它是未排序的。 我们可以使用Collections类来对ArrayList进行排序。…

    Java 2023年5月26日
    00
  • java实现数组中的逆序对

    首先,让我们先来了解逆序对的概念。逆序对是指在一个数组a中,对于任意两个元素a[i]和a[j],当且仅当ia[j]时,就称这两个元素是一个逆序对。 为了实现数组中的逆序对,我们可以采用归并排序的思路,利用分治算法的思想来实现。 具体的实现过程如下: 将数组从中间分成两个子数组,递归地对两个子数组进行排序,直到每个子数组只剩下一个元素。 然后将两个子数组合并成…

    Java 2023年5月26日
    00
  • Spring mvc JSON数据交换格式原理解析

    下面我将详细讲解“Spring mvc JSON数据交换格式原理解析”的完整攻略。 1. 先来了解JSON JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写,并易于机器解析和生成。JSON是基于JavaScript语言的一个子集,因此JavaScript程序员很容易地理解和使用。 2. Spring …

    Java 2023年6月15日
    00
  • 浅谈JavaScript字符串拼接

    下面是关于JavaScript字符串拼接的完整攻略。 什么是JavaScript字符串拼接 字符串拼接是指将多个字符串连接成一个字符串的过程,这在JavaScript中是一项很常见的操作。在实际开发中,我们经常需要从不同的字符串片段中构建出我们需要的完整字符串,比如构建URL字符串、HTML字符串等。 如何使用JavaScript字符串拼接 使用加号拼接字符…

    Java 2023年5月27日
    00
  • Maven setting.xml配置文件详解

    下面是Maven setting.xml配置文件详解的完整攻略。 什么是Maven的setting.xml配置文件? Maven的setting.xml配置文件是Maven构建系统的配置文件之一,它可以对Maven构建过程中的各种参数进行设置,比如Maven的本地仓库路径、代理服务器地址、编译插件、发布仓库等等。设置这些参数可以让我们的Maven构建过程更加…

    Java 2023年5月19日
    00
  • 带你深入理解MyBatis缓存机制

    当我们在使用 MyBatis 操作数据库时,缓存是一个非常重要的机制。它可以帮助我们优化性能并减轻数据库负载。MyBatis 缓存可以分为一级缓存和二级缓存。在本文中,我们将详细介绍这两种缓存机制以及其原理和使用。以下是本文将要涉及到的主要内容: 什么是 MyBatis 缓存机制 一级缓存实现原理及使用 一级缓存的局限性 二级缓存实现原理及使用 二级缓存的配…

    Java 2023年5月20日
    00
  • Java Web开发入门书籍实例解析(总结一)

    《Java Web开发入门书籍实例解析(总结一)》是一篇关于Java Web开发入门的总结性文章,本文主要讲解了学习Java Web开发所需要过的知识点,以及推荐了一些相关的开发工具和书籍。 本文提到的学习知识点包括:基础概念、编程语言、Web容器、数据库、前端开发等,建议初学者先掌握Java基础语法,然后再深入学习Java Web开发。 在讲解Web容器方…

    Java 2023年5月19日
    00
  • SpringBoot之groups应对不同的Validation规则自定义方式

    下面是详细讲解“SpringBoot之groups应对不同的Validation规则自定义方式”的完整攻略。 什么是Validation Validation是指对象验证,是一种可以验证Java对象的一组功能。在Java中,我们通常使用JSR 303规范中提供的Validation API来完成对象验证。 什么是Validation groups Valid…

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