查询数据库有如下的查询结果
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의 직렬화 및 역직렬화에 대해서는 개인적으로 두 가지 방법이 있다고 생각합니다.
으아아아1. 리플렉션 및 기타 방법을 사용하여 직접 구현하여 이 방법을 완성하면 결국 문자열을 연결하게 됩니다.
2. 상대적으로 간단한 직렬화 및 역직렬화 인터페이스를 제공하는 gson, jackson, fastjson 등과 같은 기존 json 라이브러리를 사용합니다.
예를 들어 fastjson을 사용하면 이 스타일(의사 코드)로 직렬화를 구현할 수 있습니다.
역직렬화도 비슷합니다
fastjson(oschina 소개 페이지) 등 JSON을 생성하는 Java 라이브러리가 많이 있습니다
그손
잭슨
Fastjson
그슨 검색
으아아아먼저 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);
코드를 약간만 조정하면 실행할 수 있어야 합니다.
다양한 도구를 사용해 볼 수 있는 Gson이 좋은 선택입니다
Java에는 객체를 json 문자열로 직렬화하는 방법이 너무 많습니다. 이를 사용해 보는 것은 어떨까요?
으아아아