查询数据库有如下的查询结果
name id remark time data type contain
张三 1 测试 2016 数据1 test1 1
张三 1 测试 2016 数据2 test2 1
张三 1 测试 2016 数据3 test3 1
张三 1 测试 2016 数据4 test4 1
李四 2 测试2 2016 数据99 test66 0
李四 2 测试2 2016 数据98 test66 0
......
现在我想处理数据,形成如下格式
[{name:张三,remark:测试,time:2016,display:[{data:数据1,type:test1},{data:数据2,type:test2},{data:数据3,type:test3},{data:数据4,type:test4}]},{name:李四,remark:测试2,time:2016,display:[{data:数据99,type:test66},[{data:数据98,type:test66}]}]
需要一个比较方便的方法,手动拼接就算了,感谢。
[
{
name: 张三,remark:测试,time:2016,display: [
{
data: 数据1,type: test1
},
{
data: 数据2,type: test2
},
{
data: 数据3,type: test3
},
{
data: 数据4,type: test4
}
]
},
{
name: 李四,remark:测试2,time:2016,display: [
{
data: 数据99,type: test66
},
[
{
data: 数据98,type: test66
}
]
}
]
想到用hashmap,不过没实现,请教各位指点下
質問者は、シリアル化と逆シリアル化の概念がまだないためにこの質問を提起しました。
シリアル化は、Java インスタンスを xml または json (またはその他の仕様) 文字列に変換するなど、オブジェクトを特定の形式のデータに変換するプロセスです。逆シリアル化プロセスはその逆で、xml、json (またはその他の仕様) を Java オブジェクトに変換します。
JSON のシリアル化と逆シリアル化については、個人的には 2 つの方法があると考えています。
リーリー1. リフレクションやその他のメソッドを使用してこのメソッドを完成させるなど、最終的には文字列を結合することになります。
2. gson、jackson、fastjson などの既存の json ライブラリを使用します。これらは比較的単純なシリアル化および逆シリアル化インターフェイスを提供します。
たとえば、fastjson を使用すると、このスタイル (擬似コード) でシリアル化を実装できます。
逆シリアル化も同様です
fastjson (oschina 紹介ページ) など、JSON を生成する Java ライブラリは多数あります
グソン
ジャクソン
Fastjson
Gson を検索
リーリーまず Java Bean にアセンブルしてから、いくつかの JSON シリアル化ツールを使用します。一般的に使用されるツールには
Jackson,fastjson,Gson
などがあります。ハッシュマップを使用し、それをリストに入れ、次にマップに入れ、Gson を通じて変換できます。
例:
Map<String,Stirng> nameMap = new HashMap<String,String>();
nameMap .put(name,"Zhang San");
nameMap .put(remark, " 営業担当者");
Map<String,Stirng> dataMap= new HashMap<String,String>();
List dataList =new ArrayList();
for(int i=0;i<= 4 ;i++){
dataMap.put("data","data1");
dataMap.put("type","666");
}
dataList.add(dataMap) ;
nameMap.put(display,dataList);
String s = new Gson().toJson(nameMap);
コードはわずかな調整で実行できるはずです。
さまざまなツールを試すことができます。
Java にはオブジェクトを JSON 文字列にシリアル化する方法がたくさんあります。なぜそれらを使用しないのでしょうか?
リーリー