视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
mysql-数据库读取出来的数据如何组装多层嵌套的json
2020-11-09 09:19:34 责编:小采
文档
 mysqljson算法 数据结构 java

数据库字段如图

三个主键?day,hour,store,就是按要可以查出某天的某小时的某个店铺的具体销售情况,
day,hour,store的数据可重复,但三个字段组成的数据是唯一的。
要求用java??mysql??jdbc(其它数据库连接技术也可以)但语言必须是java。
如何读取数据库组成下面这种格式的json?
我自己用jdbc然后多层while循环可以组成这种格式,但是非常低效。数据量一大就很慢很慢了

求高效的解决办法

多层嵌套格式
{
??2016-07-16:
?????{??
???????1:
??????????[
????????????nike:{
????????????sales_count:1000
????????????profit:200
????????????sales_value:10000
????????????
????????????
????????????}
???????????adidas:
???????????{
?????????????
????????????sales_count:1001
????????????profit:201
????????????sales_value:10001
???????????}
??????????
??????????]
?????????
???????????
2:
??????????[
????????????nike:{
????????????sales_count:1002
????????????profit:203
????????????sales_value:10004
????????????
????????????
????????????}
???????????adidas:
???????????{
?????????????
????????????sales_count:1005
????????????profit:206
????????????sales_value:10007
???????????}
??????????
??????????]
??????????......
??????????
??????????
?2016-07-17:
?????{??
???????1:
??????????[
????????????nike:{
????????????sales_count:1008
????????????profit:208
????????????sales_value:10008
????????????
????????????
????????????}
???????????adidas:
???????????{
?????????????
????????????sales_count:1009
????????????profit:209
????????????sales_value:10009
???????????}
??????????
??????????]
?????????
???????????
2:
??????????[
????????????nike:{
????????????sales_count:2002
????????????profit:204
????????????sales_value:20004
????????????
????????????
????????????}
???????????adidas:
???????????{
?????????????
????????????sales_count:1505
????????????profit:216
????????????sales_value:10077
???????????}
??????????
??????????]
......

}

回复内容:

将数据库取出来的数据转化成对象,然后用gson将对象直接转化成json字符串!

你的SQL语句写好了,只要一个对记录集的大遍历,在里面加两个判断处理就可以了。你不是说写好了吗?贴出来让人修改。

另外,这个数量大是大到什么程度?你要是搞出来好几M甚至几十上百M的体积,光是传输也够慢了。

你这里有个问题,就是里面销售数据的key是店名,也就是不固定的,所以实现会非常复杂。
建议你稍微改造一下,复杂度会降低很多,里面的子数组格式改为:
[
{
store: nike
sales_count:2002
profit:204
sales_value:20004
},
{
sales_count:1505
profit:216
sales_value:10077
},
...
]

那么可以这么设计JavaBean接收数据,然后使用工具Object转jsonString

class Result {
List ts;
}

class T {
String day;
int hour;
List stores;
}

class Store {
String store;
int sales_count;
int profit;
int sales_value;
}

sql查询的话,建议不要用大sql,因为子查询太多,太多子查询会指数级减慢大sql效率,用java循环执行简单SQL。

1。 第一步,查询第一层的基本数据,得到List(T):
select distinct day, hour from Table;

  1. 第二步,循环List(T),根据day+hour,循环填充里面的store信息: select store, sales_count, profit, sales_value from T where day = ? and hour =?;

逻辑清晰,结构也不复杂,就两层。

下载本文
显示全文
专题