JSON(JavaScript Object Notation)是一種輕量級(jí)的數(shù)據(jù)格式,目前廣泛應(yīng)用于數(shù)據(jù)傳輸和存儲(chǔ)中。MySQL是一款關(guān)系型數(shù)據(jù)庫(kù),可以將JSON數(shù)據(jù)存入數(shù)據(jù)庫(kù)中。本文介紹如何使用Java將JSON數(shù)據(jù)存入MySQL數(shù)據(jù)庫(kù)。
首先,在Java代碼中需要定義一個(gè)實(shí)體類(lèi),用于映射JSON數(shù)據(jù)。比如,我們定義一個(gè)User類(lèi),包含id、name和age三個(gè)屬性。
public class User { private int id; private String name; private int age; // 省略setter和getter方法 }
接著,我們需要導(dǎo)入相關(guān)的jar包。這里我們使用mysql-connector-java連接MySQL數(shù)據(jù)庫(kù),使用json-lib讀取和解析JSON數(shù)據(jù)。
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; import net.sf.json.JSONObject; import net.sf.json.JSONSerializer; import net.sf.json.JsonConfig; import net.sf.json.util.CycleDetectionStrategy; public class JsonToMysqlDemo { static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL = "jdbc:mysql://localhost/test"; static final String USER = "root"; static final String PASS = "root"; public static void main(String[] args) { Connection conn = null; PreparedStatement pstmt = null; try { // 注冊(cè)JDBC驅(qū)動(dòng) Class.forName(JDBC_DRIVER); // 打開(kāi)連接 conn = DriverManager.getConnection(DB_URL, USER, PASS); // JSON字符串 String jsonStr = "{\"id\":1,\"name\":\"張三\",\"age\":18}"; // 將JSON字符串轉(zhuǎn)換為JSONObject對(duì)象 JsonConfig jsonConfig = new JsonConfig(); // 防止json-lib循環(huán)依賴(lài) jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT); JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(jsonStr, jsonConfig); // 將JSONObject對(duì)象轉(zhuǎn)換為Java對(duì)象 User user = (User) JSONObject.toBean(jsonObject, User.class); // 插入數(shù)據(jù) String sql = "insert into user(id, name, age) values (?, ?, ?)"; pstmt = conn.prepareStatement(sql); pstmt.setInt(1, user.getId()); pstmt.setString(2, user.getName()); pstmt.setInt(3, user.getAge()); pstmt.executeUpdate(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { try { if (pstmt != null) { pstmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } }
代碼中先定義了一個(gè)User類(lèi),然后使用mysql-connector-java和json-lib作為依賴(lài)庫(kù)。在main函數(shù)中定義了連接MySQL數(shù)據(jù)庫(kù)的相關(guān)信息,并將一個(gè)JSON字符串轉(zhuǎn)換為JSONObject對(duì)象,然后將JSONObject對(duì)象轉(zhuǎn)換為Java對(duì)象。最后執(zhí)行SQL語(yǔ)句將數(shù)據(jù)存入MySQL數(shù)據(jù)庫(kù)。
至此,我們就可以使用Java將JSON數(shù)據(jù)存入MySQL數(shù)據(jù)庫(kù)了。注意,以上代碼只針對(duì)單條JSON數(shù)據(jù)進(jìn)行處理,如果需要批量處理,則需要對(duì)代碼做出相應(yīng)的修改。