API获取json格式数据怎么插入数据库中??

xxy_G 2020-12-22 11:07:21
json数据在控制台

格式化后是这样的


怎么吧这些控制台的json数据存到数据库?求大佬指教!!!
...全文
4343 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
忘记呼吸 2020-12-29
  • 打赏
  • 举报
回复
1. 首先你要把JSON数据在后端进行解析,解析成对应的bean,属性要一一对应起来 2. 然后你要用orm框架(Hibernate/mybatis等)把数据放到数据库 题外话: 你的json数据有点长,太不清晰了 推荐一个在线格式化的网站,有助于你以后解析json和拍错 https://www.jsonformatting.com/jsonformat/
指尖精彩 2020-12-29
  • 打赏
  • 举报
回复
mysql支持json
xxy_G 2020-12-24
  • 打赏
  • 举报
回复
引用 14 楼 虾米__ 的回复:
需要从你具体的业务进行分析的 比如说,你json已经解析了,看一下,后期的业务是不是需要某个参数,比如,我看你的json里面,多次出现了value和time,这两个参数,你后期是不是要对不同的时间情况下value进行分析,如果是这样的话,建议你再解析一层,可以了解一下alibaba的fastJson,类似于这种插件,google也有的,你再进行一层解析,解析成实体类,或者list类型的实体类,然后进行下一步存储,存储的数据类型,也可以根据你实际的业务,使用string类型或者int或者decimal。 如果你仅仅是想吧这个json存下来,后期无用,再次使用的时候,希望再重新调出来还是这个json本来的模样,你可以直接存json不经过处理的样子,存一个长字符串到数据库,再次使用的时候,直接调出来,还是这个样子
对的,我就需要把 "Identifier": "CurrentHumidity", value和time存到数据库,后期会用到。
  • 打赏
  • 举报
回复
首先你是要将这个json数据存到数据库还是解析JSON数据再对应存
fly4free 2020-12-23
  • 打赏
  • 举报
回复
就是【保存字符串到数据库】
KeepSayingNo 2020-12-23
  • 打赏
  • 举报
回复
兄弟,你做的是不是物联网方面的系统啊,是在哪个公司做什么项目
KeepSayingNo 2020-12-23
  • 打赏
  • 举报
回复
你接收到的json应该是一个String,你用fastjson按照JSONArray 和 JSONObject的方式解析,解析完了放到一个List<PropertyData>里面, PropertyData包括identifier,value, time这些属性,然后调DAO层的方法保存
  • 打赏
  • 举报
回复
1、直接将json存到数据库(操作简单,但是不推荐。) 2、将json转为bean,将bean存入数据库中(推荐这种) 具体步骤: 2.1、建立对应的bean 2.2、导入com.fasterxml.jackson工具类 2.3、使用这个工具类里面的ObjectMapper对象的.readValue 方法。
虾米__ 2020-12-23
  • 打赏
  • 举报
回复
需要从你具体的业务进行分析的 比如说,你json已经解析了,看一下,后期的业务是不是需要某个参数,比如,我看你的json里面,多次出现了value和time,这两个参数,你后期是不是要对不同的时间情况下value进行分析,如果是这样的话,建议你再解析一层,可以了解一下alibaba的fastJson,类似于这种插件,google也有的,你再进行一层解析,解析成实体类,或者list类型的实体类,然后进行下一步存储,存储的数据类型,也可以根据你实际的业务,使用string类型或者int或者decimal。 如果你仅仅是想吧这个json存下来,后期无用,再次使用的时候,希望再重新调出来还是这个json本来的模样,你可以直接存json不经过处理的样子,存一个长字符串到数据库,再次使用的时候,直接调出来,还是这个样子
xxy_G 2020-12-23
  • 打赏
  • 举报
回复
引用 10 楼 KeepSayingNo 的回复:
兄弟,你做的是不是物联网方面的系统啊,是在哪个公司做什么项目
对,但我刚了解这方面,我是学生没毕业呢太菜了谈不上做项目。如果您对这方面了解的话可以加qq细说一下感谢:954939176
小钱要努力 2020-12-22
  • 打赏
  • 举报
回复
发给后端储存
viewgroup 2020-12-22
  • 打赏
  • 举报
回复
你的意思是,那个输出不是你的代码输出的对吗? 你想把别人输出到控制台的json 插入到自己的数据库是这个样子吗?
xxy_G 2020-12-22
  • 打赏
  • 举报
回复
引用 2 楼 viewgroup 的回复:
1.你先引入对应数据库的jar包,比如我是MySQL就引入 mysql-connection-java 2.如下代码可以创建MySQL链接 ,如果你是其他数据库,只需要按照我注释更改就行了

import com.google.gson.Gson;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

public static void main(String[] args) {
        try {
            /** 建表语句
             *  CREATE TABLE `test` (
             *   `id` int NOT NULL AUTO_INCREMENT,
             *   `json_text` text COLLATE utf8mb4_bin,
             *   PRIMARY KEY (`id`)
             * ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
             */
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url="jdbc:mysql://localhost:3306/ssy";//如果是其他数据库,只需要更改MySQL 为其他数据库即可
            String user = "root";
            String password="xxx";
            Connection connection= DriverManager.getConnection(url,user,password);
            String sql="INSERT INTO `test`(json_text) VALUES(?)";
            PreparedStatement ps=connection.prepareStatement(sql);
            Map<String,String> map=new HashMap<>();
            map.put("id","1");
            map.put("name","sunsy");
            ps.setString(1,new Gson().toJson(map));
            ps.execute();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }



我需要把控制台的json数据存到数据库,您这个是手动添加嘛?
xxy_G 2020-12-22
  • 打赏
  • 举报
回复
引用 1 楼 亦夜 的回复:
首先你能获取到这些数据吗,然后传给后台解析成对应实体对象,存到数据库不就行了吗
可以在控制台看到json格式的数据,解析实体对象是这样子吗? 可以仔细说下嘛,我刚了解这方面不是很会,可以的话可以加qq细说:954939176 感谢感谢,麻烦了。
viewgroup 2020-12-22
  • 打赏
  • 举报
回复
结果就是这个
id json_test
1 {"name":"sunsy","id":"1"}
viewgroup 2020-12-22
  • 打赏
  • 举报
回复
1.你先引入对应数据库的jar包,比如我是MySQL就引入 mysql-connection-java
2.如下代码可以创建MySQL链接 ,如果你是其他数据库,只需要按照我注释更改就行了

import com.google.gson.Gson;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;

public static void main(String[] args) {
try {
/** 建表语句
* CREATE TABLE `test` (
* `id` int NOT NULL AUTO_INCREMENT,
* `json_text` text COLLATE utf8mb4_bin,
* PRIMARY KEY (`id`)
* ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
*/
Class.forName("com.mysql.cj.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/ssy";//如果是其他数据库,只需要更改MySQL 为其他数据库即可
String user = "root";
String password="xxx";
Connection connection= DriverManager.getConnection(url,user,password);
String sql="INSERT INTO `test`(json_text) VALUES(?)";
PreparedStatement ps=connection.prepareStatement(sql);
Map<String,String> map=new HashMap<>();
map.put("id","1");
map.put("name","sunsy");
ps.setString(1,new Gson().toJson(map));
ps.execute();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}



亦夜 2020-12-22
  • 打赏
  • 举报
回复
首先你能获取到这些数据吗,然后传给后台解析成对应实体对象,存到数据库不就行了吗

51,407

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧