首頁  >  文章  >  資料庫  >  mysql-資料庫讀取出來的資料如何組裝多層嵌套的json

mysql-資料庫讀取出來的資料如何組裝多層嵌套的json

WBOY
WBOY原創
2016-08-20 08:47:584013瀏覽

mysqljson演算法資料結構java

資料庫欄位如圖

三個主鍵 day,hour,store ,就是按要可以查出某天的某小時的某個店舖的具體銷售情況,
day,hour,store的資料可重複,但三個欄位組成的資料是唯一的。
要求用java  mysql  jdbc(其它資料庫連接技術也可以)但語言必須是java。
如何讀取資料庫組成下面這種格式的json 
我自己用jdbc然後多層while循環可以組成這種格式,但是非常低效。資料量一大就很慢很慢了

求高效率的解決方法

多層嵌套格式
{
  2016-07-16:
     [
            nike:{
            sales_count:1000      sales_count:1000      :200
            sales_value:10000
               }
           adidas:
           {
    sales_count:1001
            profit:201
                  
          ]
         
                 nike:{
            sales_count:1002
      :203
            sales_value:10004
               }
           adidas:
           {
    sales_count:1005
            profit:206
                  
          ]
          ......
    7-17:
{  
       1:
          [
            nike:{
            sales_count:1008
            profit:208
            sales_value:10008
            
            
            }
           adidas:
           {
             
            sales_count:1009
            profit:209
            sales_value:10009
           }
          
          ]

           
2:
          [
       :2002
            profit:204
                   
            }
               
            sales_count:1505
                       }
          
          ]
....

}







回覆內容:

將資料庫取出的資料轉換成對象,然後用gson將物件直接轉換成json字串!

你的SQL語句寫好了,只要一個對記錄集的大遍歷,在裡面加兩個判斷處理就可以了。你不是說寫好了嗎?貼出來讓人修改。

另外,這個數量大是大到什麼程度?你要是搞出來好幾M甚至幾十上百M的體積,光是傳輸也夠慢了。

你這裡有個問題,就是裡面銷售數據的key是店名,也就是不固定的,所以實現會非常複雜。
建議你稍微改造一下,複雜度會降低很多,裡面的子陣列格式改為:
[
{
store: nike
sales_count:2002
profit:204
sales_value:20004

},

{

sales_count:1505

profit:216mysql-資料庫讀取出來的資料如何組裝多層嵌套的json 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 =?;

邏輯清晰,結構也不複雜,就兩層。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn