mysql - データベースから読み取ったデータから多層のネストされた JSON を組み立てる方法

WBOY
リリース: 2016-08-20 08:47:58
オリジナル
4069 人が閲覧しました

mysqljson アルゴリズム データ構造 java

データベース フィールドは図に示すとおりです

3 つの主キー day、hour、store、つまり、特定の日の特定の時間における店舗の具体的な売上を知ることができます
日、時間、店舗 データは繰り返すことができますが、3 つのフィールドで構成されるデータは一意です。
Java mysql jdbc が必要です (他のデータベース接続テクノロジーも使用できます) が、言語は Java である必要があります。
データベースを読み込んで次の形式の json を形成するにはどうすればよいですか?
私は自分で jdbc を使用し、マルチレイヤー while ループを使用してこの形式を形成しますが、非常に非効率です。データ量が多いと非常に遅くなります

効率的な​​解決策を探しています

マルチレベルのネストされた形式
{
2016-07-16:
sales_count:1000
利益 ; 売上数:1001
利益: 201
sales_value:10001
}
]

sales_count:1005
利益:206
sales_value:10007
}
}
; {
1:
[
ナイキ: {
sales_count: 1008
propit: 208
sales_value: 10008

}}
アディダス: {

sales_count: 1009
sales_value: 10009
}

]


2:
[
nike: {
sales_count: 2002
利益: 204
売上高: 20004

}}
{

sales_count: 1505
Profit: 216
sales_value: 10077

}

]
...

}







返信内容:

データベースから取得したデータをオブジェクトに変換し、gson を使用してオブジェクトを json 文字列に直接変換します。

SQL ステートメントを作成した後、必要なのは、レコード セットの大規模な走査とその中の 2 つの判断プロセスだけです。書いてあるって言ってなかったっけ?投稿して変更させてください。

また、この量はどれくらいですか?数M、場合によっては数十、数百Mのボリュームを作成すると、送信だけでも十分に遅くなります。

ここで問題が発生します。つまり、売上データのキーは固定されていない店舗名であるため、実装は非常に複雑になります。
わずかに変更を加えることをお勧めします。複雑さが大幅に軽減され、内部のサブ配列形式が次のように変更されます。 [
{
ストア: ナイキ
販売数:2002
利益:204
sales_value:20004
}、
{
販売数:1505
利益:216
sales_value:10077
}、
...
]

その後、このようなデータを受信するように JavaBean を設計し、オブジェクト ツールを使用してそれを jsonString に変換できます

クラス結果{

リスト ts;

}

mysql - データベースから読み取ったデータから多層のネストされた JSON を組み立てる方法クラスT{

弦の日;
int 時間; ストアをリストする; }

クラスストア{

文字列ストア;

int sales_count;

内部利益;

int sales_value;

}

SQL クエリの場合は、サブクエリが多すぎると、大規模な SQL の効率が大幅に低下するため、大規模な SQL を使用しないことをお勧めします。

1. 最初のステップは、最初のレイヤーの基本データをクエリして List(T) を取得することです:
テーブルから個別の日、時間を選択します;

  1. 2 番目のステップは、List(T) をループし、日 + 時間に従ってループ内に店舗情報を入力することです。 T から店舗、売上数、利益、売上値を選択します (日 = ? および時間 =?;
  2. )

ロジックは明確で、構造は複雑ではなく、たったの2層です。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート