高斯数据库如何解析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的主要内容,如果未能解决你的问题,请参考以下文章

c如何解析json数据

如何解析json中map数据

PHP解析JSON

解析复杂JSON数据

如何在PHP中解析json

前端json请求,后端date无法解析该如何解析