Maison  >  Article  >  Java  >  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)

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)

黄舟
黄舟original
2017-03-09 10:04:501939parcourir

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,List36ee8f7418bd46bbf580ced6560b65cf,Listf7e83be87db5cd2d9a8a0b8117b38cd4,Lista06c5c2dfccfdea21bf0b155d9343663)

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 http://www.php.cn/ 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,List36ee8f7418bd46bbf580ced6560b65cf,Listf7e83be87db5cd2d9a8a0b8117b38cd4,Lista06c5c2dfccfdea21bf0b155d9343663)

String jsonStrng = JSON.toJSONString(object);

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

1.

Person person = JSON.parseObject(jsonString, Person.class);

2. Liste36ee8f7418bd46bbf580ced6560b65cf

List<Person> listPerson =JSON.parseArray(jsonString, Person.class);

3. ;

List<String> listString = JSON.parseArray(jsonString, String.class);

4. Listea06c5c2dfccfdea21bf0b155d9343663>

Copier le code Le code est la suivante :

List<Map<String, Object>> listMap = JSON.parseObject(jsonString, new TypeReference<List<Map<String,Object>>>(){});
(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();//用来换行 
  } 
 } 
}

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-郭富城

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();//用来换行 
  } 
 } 
}

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":"郭富城"}

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();//用来换行 
  } 
 } 
}

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-"郭富城"


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!

Déclaration:
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