java - 组装json对象的问题
PHPz
PHPz 2017-04-18 10:04:22
0
8
536

查询数据库有如下的查询结果
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,不过没实现,请教各位指点下

PHPz
PHPz

学习是最好的投资!

全部回复(8)
刘奇

题主提出这个问题,是因为还没有序列化和反序列化的概念。
序列化是将一个对象转换为某种特定格式数据的过程,比如将一个java实例转化为xml或者json(或者其他规范)字符串。反序列化过程相反,是将一个xml、json(或者其他规范)转为一个java对象。

具体针对json的序列化和反序列化来讲,个人认为有两种方式
1.自己实现,比如使用反射等方式完成这种方式最终还是拼接字符串,属于自己造轮子了
2.使用现有的json库,比如gson,jackson,fastjson等,他们提供了比较简单的序列化和反序列化的接口。
比如使用fastjson,可以类似这种风格实现序列化(伪代码)

List<User> list = new List<User>();
list.add(new User());
list.add....
String jsonStr = Json.toJsonString(list);

反序列化类似

迷茫

生成 JSON 的 Java 库很多,比如 fastjson (oschina介绍页面)

  • Gson

  • Jackson

  • Fastjson

刘奇

搜索Gson

Sting str = new Gson().toJson(obj)
迷茫

先组装成一个Java Bean,然后使用一些JSON序列化的工具,常用的有Jackson,fastjson,Gson等。

阿神

可以用hashmap,放到list之后,再放到map中,通过Gson转化。
比如
Map<String,Stirng> nameMap = new HashMap<String,String>();
nameMap .put(name,"张三");
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","数据1");
dataMap.put("type","666");
}
dataList.add(dataMap);
nameMap.put(display,dataList);
String s = new Gson().toJson(nameMap);
代码稍微调整一下应该能运行。

大家讲道理

可以尝试各种工具类 Gson是个不错的选择

巴扎黑

java有那么多将对象序列化为json字符串为啥不用呢

黄舟

雷雷

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板