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

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

学习是最好的投资!

répondre à tous(8)
刘奇

L'intervenant a soulevé cette question car il n'y a pas encore de concept de sérialisation et de désérialisation.
La sérialisation est le processus de conversion d'un objet en données dans un format spécifique, comme la conversion d'une instance Java en une chaîne XML ou JSON (ou autre spécification). Le processus de désérialisation est l'inverse, convertissant un XML, JSON (ou autre spécification) en un objet Java.

Plus précisément pour la sérialisation et la désérialisation de json, je pense personnellement qu'il existe deux façons
1. L'implémenter vous-même, par exemple en utilisant la réflexion et d'autres méthodes pour compléter cette méthode, en fin de compte, vous épisserez toujours les chaînes. , qui est votre propre roue.
2. Utilisez les bibliothèques json existantes, telles que gson, jackson, fastjson, etc., qui fournissent des interfaces de sérialisation et de désérialisation relativement simples.
Par exemple, en utilisant fastjson, la sérialisation peut être implémentée dans ce style (pseudocode)

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

La désérialisation est similaire

迷茫

Il existe de nombreuses bibliothèques Java qui génèrent du JSON, comme fastjson (page d'introduction d'oschina)

  • Gson

  • Jackson

  • Fastjson

刘奇

Rechercher Gson

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

Assemblez-le d'abord dans un bean Java, puis utilisez certains outils de sérialisation JSON, ceux couramment utilisés incluent Jackson,fastjson,Gson et ainsi de suite.

阿神

Vous pouvez utiliser hashmap, le mettre dans la liste, puis le mettre dans la carte et le convertir via Gson.
Par exemple
Map<String,Stirng> nameMap = new HashMap<String,String>();
nameMap .put(name,"Zhang San");
nameMap .put(remarque, " Vendeur");
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);
Le code devrait pouvoir s'exécuter avec un léger ajustement.

大家讲道理

Vous pouvez essayer différents outils. Gson est un bon choix

巴扎黑

Java propose de nombreuses façons de sérialiser des objets en chaînes JSON, pourquoi ne pas les utiliser ?

黄舟
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();
  }
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal