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

查询数据库有如下的查询结果
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

学习是最好的投资!

membalas semua(8)
刘奇

Penyoal membangkitkan soalan ini kerana belum ada konsep bersiri dan penyahserikatan.
Siri ialah proses menukar objek kepada data dalam format tertentu, seperti menukar tika java kepada rentetan xml atau json (atau spesifikasi lain). Proses penyahserikatan adalah sebaliknya, menukar xml, json (atau spesifikasi lain) kepada objek java.

Secara khusus untuk pensirilan dan penyahserikan json, saya secara peribadi berpendapat terdapat dua cara
1. Laksanakannya sendiri, seperti menggunakan refleksi dan kaedah lain untuk melengkapkan kaedah ini , yang merupakan roda anda sendiri
2. Gunakan perpustakaan json yang sedia ada, seperti gson, jackson, fastjson, dll., yang menyediakan antara muka bersiri dan penyahserilan.
Sebagai contoh, menggunakan fastjson, siri boleh dilaksanakan dalam gaya ini (pseudokod)

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

Deserialisasi adalah serupa

迷茫

Terdapat banyak perpustakaan Java yang menjana JSON, seperti fastjson (halaman pengenalan oschina)

  • Gson

  • Jackson

  • Fastjson

刘奇

Cari Gson

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

Mula-mula himpunkannya menjadi Java Bean, dan kemudian gunakan beberapa alat pensirilan JSON, yang biasa digunakan termasuk Jackson,fastjson,Gson dan seterusnya.

阿神

Anda boleh menggunakan peta cincang, letakkannya dalam senarai, kemudian letakkannya dalam peta, dan tukarkannya melalui Gson.
Contohnya
Map<String,Stirng> nameMap = new HashMap<String,String>();
nameMap .put(name,"Zhang San");
nameMap .put(remark, " Jurujual");
Map<String,Stirng> dataMap= new HashMap<String,String>();
Senarai 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);
Kod sepatutnya boleh dijalankan dengan sedikit pelarasan.

大家讲道理

Anda boleh mencuba pelbagai alat Gson adalah pilihan yang baik

巴扎黑

Java mempunyai banyak cara untuk menyusun objek menjadi rentetan json, mengapa tidak menggunakannya?

黄舟
public class JsonUtils{
    
  private static final ObjectMapper mapper = new ObjectMapper();
  public static String Object2Json(Object o)throws BusinessException{
    StringWriter writer = new StringWriter();
    try {
      mapper.writeValue(writer, o);
    } catch (IOException e) {
      e.printStackTrace();
      throw new BusinessException(0, "Entity转换成Json时出现异常。", e);
    }
    return writer.toString();
  }
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan