高斯数据库如何解析json
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高斯数据库如何解析json相关的知识,希望对你有一定的参考价值。
参考技术A 高斯数据库解析json如下:先将json转成struct。然后json.Unmarshal即可。json转struct,可以直接用在线的工具:https://mholt.github.io/json-to-go/在左边贴上json后面就生成struct了。
高斯数据库是由华为于2019年5月15日在北京发布的一款人工智能原生数据库。该数据库支持本地部署、私有云、公有云等多种场景。
如何将 JSON 文档解析到数据库中
【中文标题】如何将 JSON 文档解析到数据库中【英文标题】:How to parse a JSON document into a database 【发布时间】:2013-12-25 07:32:56 【问题描述】:我有一个包含产品信息的 JSON 文档,我想解析 JSON 文档并将其放入数据库中。
一个示例 JSON 文档:
"itemize":
"pr": "2583",
"n": "Chocolate donut",
"yst": "A beautiful, premium chocolate donut"
"wh": 2.99
这是我目前的代码:
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
public class q1
public static void addProduct()
JSONParser parser=new JSONParser();
try
Object obj = parser.parse(new FileReader("c.\\itemize.json"));
JSONObject jsonObject = (JSONObject) obj;
String pr = (String) jsonObject.get("Pr");
//Put pr into database
String n = (String) jsonObject.get("n");
//Put n into database
String yst = (String) jsonObject.get("yst");
//Put yst into database
String wh = (String) jsonObject.get("wh");
//Put wh into database
数据库在 MySQL 中,并且已经包含所有这些列。我只需要将 java 代码中的注释行替换为将字符串放入数据库的行。这是数据库的样子:
Pr VARCHAR(30) NOT NULL,
n VARCHAR(30) NOT NULL,
yst VARCHAR(30) NOT NULL,
wh VARCHAR(30) NOT NULL,
Primary Key (Product_ID));
【问题讨论】:
使用java.sql.PreparedStatement
。
为了使代码有用,您确实需要添加第二条记录,因此某些代码获取所有标签对您理解有所不同,可能会改变您编码的方式。
【参考方案1】:
这样做。
Object obj = parser.parse(new FileReader("c.\\itemize.json"));
JSONObject jsonObject = (JSONObject ) obj;
JSONObject itemize = (JSONObject) jsonObject.get("itemize");
String pr = (String) itemize.get("Pr");
String n = (String) itemize.get("n");
String yst = (String) itemize.get("yst");
String wh = (String) itemize.get("wh");
【讨论】:
【参考方案2】:首先,我建议您在代码和数据库中为变量使用限定名称。 毕竟你的代码,使用这些行来创建插入
//use DriverManager to getConnection for your mySQL
conObj = getConnection();
String preQueryStatement = "INSERT INTO <TABLENAME> VALUES (?,?,?,?)";
pStmnt = conObj.prepareStatement(preQueryStatement);
pStmnt.setString(1, Pr );
pStmnt.setString(2, n);
pStmnt.setString(3, yst );
pStmnt.setInt(4, wh );
// execute insert SQL stetement
preparedStatement .executeUpdate();
【讨论】:
【参考方案3】:用于访问数据库的 Java 接口是 Java 数据库连接 (JDBC)。使用 JDBC,您可以创建与数据库的连接、发出数据库查询和更新并接收结果。试试下面的代码
private Connection connect = null;
PreparedStatement preparedStatement = null;
public int save() throws Exception
int status = 0;
try
// Load the MySQL driver, each DB has its own driver
Class.forName("com.mysql.jdbc.Driver");
// DB connection setup
connect = DriverManager.getConnection("jdbc:mysql://dbhost/database?" + "user=sqluser&password=sqluserpw");
// PreparedStatements
preparedStatement = connect
.prepareStatement("insert into Table_Name values (?, ?, ?, ? )");
Object obj = parser.parse(new FileReader("c.\\itemize.json"));
JSONObject jsonObject = (JSONObject) obj;
String pr = (String) jsonObject.get("Pr");
// Parameters start with 1
preparedStatement.setString(1, pr);
String n = (String) itemize.get("n");
preparedStatement.setString(2, n);
String yst = (String) jsonObject.get("yst");
preparedStatement.setString(3, yst);
String wh = (String) itemize.get("wh");
preparedStatement.setString(4, wh);
status = preparedStatement.executeUpdate();
catch (Exception e)
throw e;
finally
try
if (connect != null)
connect.close();
catch (Exception e)
return status;
【讨论】:
什么是 1,2, 3,4.. 是某种索引或列属性吗? 它的占位符(?在插入准备好的语句中)索引。 docs.oracle.com/javase/tutorial/jdbc/basics/prepared.html以上是关于高斯数据库如何解析json的主要内容,如果未能解决你的问题,请参考以下文章