mysql-数据库读取出来的数据如何组装多层嵌套的json

php中文网
发布: 2016-08-20 08:47:58
原创
4233人浏览过

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字符串!

即构数智人
即构数智人

即构数智人是由即构科技推出的AI虚拟数字人视频创作平台,支持数字人形象定制、短视频创作、数字人直播等。

即构数智人 36
查看详情 即构数智人

你的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 =?;

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

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号