Maison > Java > javaDidacticiel > le corps du texte

Introduction détaillée à fastjson en Java pour générer et analyser des données json (données de sérialisation et de désérialisation)

黄舟
Libérer: 2017-03-09 10:04:50
original
1911 Les gens l'ont consulté

Cet article présente principalement fastjson en Java pour générer et analyser des données json (données de sérialisation et de désérialisation). Il a une certaine valeur de référence.

Cet article explique 2 points :

1. Fastjson génère et analyse les données json

(Exemple : 4 types courants. :JavaBean,List,List,List)

2. Testez l'utilisation de fastjson via un programme Android.

Introduction à fastjson :

Fastjson est une bibliothèque JSON performante et complète écrite en langage Java. fastjson utilise un algorithme original pour augmenter la vitesse d'analyse à l'extrême, surpassant toutes les bibliothèques json, y compris jackson, qui était autrefois connue comme la plus rapide. Et il surpasse également le protocole binaire buf de Google. Fastjson prend entièrement en charge la norme //m.sbmmt.com/ et est également l'une des implémentations de référence incluses sur le site officiel. Prend en charge différents types de JDK. Y compris les types de base, JavaBean, Collection, Map, Enum, génériques, etc. Prend en charge les téléphones mobiles JDK 5, JDK 6, Android, Alibaba Cloud et d'autres environnements.

1. fastjson génère une chaîne json (JavaBean,List,List,List)

String jsonStrng = JSON.toJSONString(object);
Copier après la connexion

2. fastjson analyse la chaîne json en quatre types

1.

Person person = JSON.parseObject(jsonString, Person.class);
Copier après la connexion

2. Liste

List<Person> listPerson =JSON.parseArray(jsonString, Person.class);
Copier après la connexion

3. ;

List<String> listString = JSON.parseArray(jsonString, String.class);
Copier après la connexion

4. Liste>

Copier le code Le code est la suivante :

List<Map<String, Object>> listMap = JSON.parseObject(jsonString, new TypeReference<List<Map<String,Object>>>(){});
Copier après la connexion
(Remarque : on peut voir ici que le mécanisme de réflexion fastjson est plus précis que gson. id = 1001 est toujours id = 1001 via la réflexion fastjson, et le résultat via la réflexion gson est id =1001.0 ,


analyseur JSON fastjson (produit par Alibaba, version 1.1.26), si le JSONObject est défini comme {"JACKIE_ZHANG": "Jacky Cheung", "ANDY_LAU": "Andy Lau","LIMING" :"Dawn","Aaron_Kwok":"Aaron Kwok"}, puis à la lecture de la valeur, l'ordre KEY est HS, le code test :

import comalibabafastjsonJSONObject; 
/** 
 * Created by wangzhenfei on 14-4- 
 */ 
public class FastJsonTest { 
 public static void main(String[] args){ 
  String jsonStr = "{\"JACKIE_ZHANG\":\"张学友\",\"ANDY_LAU\":\"刘德华\",\"LIMING\":\"黎明\",\"Aaron_Kwok\":\"郭富城\"}" ; 
 
 
  //做5次测试 
  for(int i=0,j=5;i<j;i++) 
  { 
   JSONObject jsonObject = JSONObjectparseObject(jsonStr) ; 
   for(javautilMapEntry<String,Object> entry:jsonObjectentrySet()){ 
    Systemoutprint(entrygetKey()+"-"+entrygetValue()+"\t"); 
   } 
   Systemoutprintln();//用来换行 
  } 
 } 
}
Copier après la connexion

Résultat d'exécution :

LIMING-黎明 Aaron_Kwok-郭富城JACKIE_ZHANG-张学友ANDY_LAU-刘德华 
Aaron_Kwok-郭富城 ANDY_LAU-刘德华LIMING-黎明JACKIE_ZHANG-张学友 
Aaron_Kwok-郭富城 JACKIE_ZHANG-张学友ANDY_LAU-刘德华LIMING-黎明 
LIMING-黎明 ANDY_LAU-刘德华JACKIE_ZHANG-张学友Aaron_Kwok-郭富城 
JACKIE_ZHANG-张学友 LIMING-黎明ANDY_LAU-刘德华Aaron_Kwok-郭富城
Copier après la connexion

Solution : défini comme JSONArray, le code est le suivant :

import comalibabafastjsonJSONArray; 
 
/** 
 * Created by wangzhenfei on 14-4- 
 */ 
public class FastJsonTest { 
 public static void main(String[] args){ 
  String jsonStr = "[{\"JACKIE_ZHANG\":\"张学友\"},{\"ANDY_LAU\":\"刘德华\"},{\"LIMING\":\"黎明\"},{\"Aaron_Kwok\":\"郭富城\"}]" ; 
  //做5次测试 
  for(int i=0,j=5;i<j;i++) 
  { 
   JSONArray jsonArray = JSONArrayparseArray(jsonStr); 
 
   for(int k=0;k<jsonArraysize();k++){ 
    Systemoutprint(jsonArrayget(k) + "\t"); 
   } 
   Systemoutprintln();//用来换行 
  } 
 } 
}
Copier après la connexion

Le résultat en cours d'exécution est :

{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"} 
{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"} 
{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"} 
{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"} 
{"JACKIE_ZHANG":"张学友"} {"ANDY_LAU":"刘德华"}{"LIMING":"黎明"}{"Aaron_Kwok":"郭富城"}
Copier après la connexion

Si vous souhaitez le définir comme JSONObject au lieu de JSONArray, vous pouvez choisir d'autres analyseurs JSON, personnellement recommandés. En utilisant le gson de Google, la documentation est évidemment bien meilleure que fastjson (d'ici vous pouvez voir l'écart entre Alibaba et Google) :

import comgooglegsonJsonElement; 
import comgooglegsonJsonObject; 
import comgooglegsonJsonParser; 
 
/** 
 * Created by wangzhenfei on 14-4- 
 */ 
public class FastJsonTest { 
 public static void main(String[] args){ 
  String jsonStr = "{\"JACKIE_ZHANG\":\"张学友\",\"ANDY_LAU\":\"刘德华\",\"LIMING\":\"黎明\",\"Aaron_Kwok\":\"郭富城\"}" ; 
  //做5次测试 
  for(int i=0,j=5;i<j;i++) 
  { 
   JsonObject jsonObject = (JsonObject) new JsonParser()parse(jsonStr); 
   for(javautilMapEntry<String,JsonElement> entry:jsonObjectentrySet()){ 
    Systemoutprint(entrygetKey()+"-"+entrygetValue()+"\t"); 
   } 
   Systemoutprintln();//用来换行 
  } 
 } 
}
Copier après la connexion

Résultats en cours :

JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"  
JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"  
JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"  
JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"  
JACKIE_ZHANG-"张学友" ANDY_LAU-"刘德华" LIMING-"黎明" Aaron_Kwok-"郭富城"
Copier après la connexion


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!