Description de Fastjson Obejct/Map/JSON/String


Introduction à Fastjson

Fastjson est une bibliothèque JSON performante et complète écrite en langage Java. Il utilise un algorithme de « correspondance rapide ordonnée supposée » pour améliorer les performances de JSON Parse à l'extrême. Il s'agit actuellement de la bibliothèque JSON la plus rapide du langage Java. L'interface Fastjson est simple et facile à utiliser et a été largement utilisée dans divers scénarios d'application tels que la sérialisation du cache, l'interaction de protocole, la sortie Web et les clients Android.

Caractéristiques principales :

  • Rapide FAST (plus rapide que tout autre analyseur et générateur basé sur Java, y compris Jackson)
  • Puissant (prend en charge les classes JDK ordinaires, y compris toute classe de bean Java, collection, carte, date ou énumération) )


  • Zéro dépendance (aucune dépendance sur d'autres bibliothèques sauf JDK)
  • Open source, utilisant le protocole Apache License 2.0.
1.2 Comment obtenir Fastjson ?
https://github.com/alibaba/fastjson

Fastjson Obejct/Map/JSON/String Méthode d'interconversion

Dans l'analyse des journaux et les interactions de transmission de données front-end et back-end, nous rencontrons souvent String et map, Dans le scénario de conversion et d'analyse mutuelles de json, xml et d'autres formats, json est fondamentalement devenu le format standard d'interaction de données de facto entre les langages, le front-end et le back-end. Il faut dire qu'il existe un grand nombre de bibliothèques pour analyser json dans différents langages (pour une introduction au format json spécifique et aux bibliothèques tierces, veuillez consulter : http://www.json.org/json- zh.html). Par exemple, python est intégré à la bibliothèque intégrée , il est devenu une API standard. Aujourd'hui, nous allons parler de la façon d'utiliser facilement le format json en java.

D'après l'introduction du lien ci-dessus, nous pouvons voir que Java possède le plus grand nombre de bibliothèques json tierces, ce qui peut être considéré comme le rythme d'une centaine de fleurs épanouies et d'une centaine d'écoles de pensée en compétition. . . Cependant, certaines bibliothèques ont des problèmes de dépendance en chaîne. Vous devez faire attention lorsque vous les utilisez. Si vous n'utilisez pas maven pour gérer vos dépendances, cela sera pénible à utiliser, comme json-lib, smart-json, etc. Ce que je voudrais recommander ci-dessous, c'est une bibliothèque json open source par les ingénieurs d'Alibaba : FastJSON. Cette bibliothèque est très bonne en termes de vitesse d'analyse et de facilité d'utilisation.


1. Comprendre la classe d'entrée de l'API fastjson


2. L'entrée d'utilisation principale de fastjson

La classe d'entrée de l'API Fastjson est com.alibaba.fastjson.JSON. les méthodes sur la classe le font directement.

public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject    public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

3. Quelques notes sur la bibliothèque de classes

SerializeWriter : équivalent à StringBuffer

JSONArray : équivalent à List<Object>

JSONObject : équivalent à Map<String, Object>

La désérialisation JSON n'a pas de véritable tableau. . Les types essentiels sont List<Object>

4. Fastjson possède également de nombreuses fonctionnalités très avancées

telles que la prise en charge des annotations et la prise en charge de la sérialisation de type complet. Ce sont de bonnes fonctionnalités et des fonctions puissantes, et n'entrent pas dans le cadre de ce test. .

5. Code de test

package lavasoft.stu.json; 

import com.alibaba.fastjson.JSON; 
import com.alibaba.fastjson.serializer.SerializeConfig; 
import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer; 

import java.util.*; 

/** 
* Created by IntelliJ IDEA. 
* 
* @author leizhimin 11-11-22 上午9:15 
*/ public class Foo { 
	private String vString = "vStringhehhehe"; 
	private char vchar = 'x'; 

	private byte vbyte = 64; 
	private short vshort = 128; 
	private int vint = 65535; 
	private long vlong = 9999999L; 

	private float vfloat = 12.1f; 
	private double vdouble = 22.203d; 

	private boolean vboolean = false; 

//	private Date vdate = new Date(); private Date dddd = new Date(); 
	private Date vDate = new Date(); 
	private Date v_Date = new Date(); 
	private Object vnull = null; 

	private String[] avString = {"aaa", "bbb", "ccc"}; 
	private int[] avint = {1, 2, 3, 4}; 
	private boolean[] avboolean = {true, false, true, true}; 

	private List<String> listString = new ArrayList<String>(); 
	private Map<String, String> map = new HashMap<String, String>(); 

	private Bar bar = new Bar(); 
	private Bar[] avBar = {new Bar(), new Bar()}; 
	private List<Bar> listBar = new ArrayList<Bar>(); 

	{ 
		listString.add("listString1"); 
		listString.add("listString2"); 
		listString.add("listString3"); 

		map.put("x", "s11111x"); 
		map.put("y", "s22222y"); 
		map.put("z", "s33333z"); 

		listBar.add(new Bar()); 
		listBar.add(new Bar()); 
		listBar.add(new Bar()); 
	} 



	public String getvString() { 
		return vString; 
	} 

	public void setvString(String vString) { 
		this.vString = vString; 
	} 

	public char getVchar() { 
		return vchar; 
	} 

	public void setVchar(char vchar) { 
		this.vchar = vchar; 
	} 

	public byte getVbyte() { 
		return vbyte; 
	} 

	public void setVbyte(byte vbyte) { 
		this.vbyte = vbyte; 
	} 

	public short getVshort() { 
		return vshort; 
	} 

	public void setVshort(short vshort) { 
		this.vshort = vshort; 
	} 

	public int getVint() { 
		return vint; 
	} 

	public void setVint(int vint) { 
		this.vint = vint; 
	} 

	public long getVlong() { 
		return vlong; 
	} 

	public void setVlong(long vlong) { 
		this.vlong = vlong; 
	} 

	public float getVfloat() { 
		return vfloat; 
	} 

	public void setVfloat(float vfloat) { 
		this.vfloat = vfloat; 
	} 

	public double getVdouble() { 
		return vdouble; 
	} 

	public void setVdouble(double vdouble) { 
		this.vdouble = vdouble; 
	} 

	public boolean isVboolean() { 
		return vboolean; 
	} 

	public void setVboolean(boolean vboolean) { 
		this.vboolean = vboolean; 
	} 

	public Date getDddd() { 
		return dddd; 
	} 

	public void setDddd(Date dddd) { 
		this.dddd = dddd; 
	} 

	public Date getV_Date() { 
		return v_Date; 
	} 

	public void setV_Date(Date v_Date) { 
		this.v_Date = v_Date; 
	} 

	public Date getvDate() { 
		return vDate; 
	} 

	public void setvDate(Date vDate) { 
		this.vDate = vDate; 
	} 

	public Object getVnull() { 
		return vnull; 
	} 

	public void setVnull(Object vnull) { 
		this.vnull = vnull; 
	} 

	public String[] getAvString() { 
		return avString; 
	} 

	public void setAvString(String[] avString) { 
		this.avString = avString; 
	} 

	public int[] getAvint() { 
		return avint; 
	} 

	public void setAvint(int[] avint) { 
		this.avint = avint; 
	} 

	public boolean[] getAvboolean() { 
		return avboolean; 
	} 

	public void setAvboolean(boolean[] avboolean) { 
		this.avboolean = avboolean; 
	} 

	public List<String> getListString() { 
		return listString; 
	} 

	public void setListString(List<String> listString) { 
		this.listString = listString; 
	} 

	public Map<String, String> getMap() { 
		return map; 
	} 

	public void setMap(Map<String, String> map) { 
		this.map = map; 
	} 

	public Bar getBar() { 
		return bar; 
	} 

	public void setBar(Bar bar) { 
		this.bar = bar; 
	} 

	public Bar[] getAvBar() { 
		return avBar; 
	} 

	public void setAvBar(Bar[] avBar) { 
		this.avBar = avBar; 
	} 

	public List<Bar> getListBar() { 
		return listBar; 
	} 

	public void setListBar(List<Bar> listBar) { 
		this.listBar = listBar; 
	} 
}


package lavasoft.stu.json; 

import com.alibaba.fastjson.JSON; 
import com.alibaba.fastjson.serializer.SerializeConfig; 
import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer; 

import java.util.Date; 
import java.util.Random; 

/** 
* Created by IntelliJ IDEA. 
* 
* @author leizhimin 11-11-22 上午9:15 
*/ public class Bar { 
	public static SerializeConfig mapping = new SerializeConfig(); 
	private String barName; 
	private int barAge; 
	private Date barDate = new Date(); 
	static { 
		mapping.put(Date.class, new SimpleDateFormatSerializer("yyyy-MM-dd")); 
	} 
	{ 
		Random r = new Random(); 
		barName = "sss_"+String.valueOf(r.nextFloat()); 
		barAge = r.nextInt(); 
	} 

	public static void main(String[] args) { 
		Object obj = JSON.toJSON(new Bar()); 
		String x1 = JSON.toJSONString(new Bar(), true); 
		System.out.println(x1); 
		String x2 = JSON.toJSONString(new Bar(), mapping); 
		System.out.println(x2); 
	} 

	public String getBarName() { 
		return barName; 
	} 

	public void setBarName(String barName) { 
		this.barName = barName; 
	} 

	public int getBarAge() { 
		return barAge; 
	} 

	public void setBarAge(int barAge) { 
		this.barAge = barAge; 
	} 

	public Date getBarDate() { 
		return barDate; 
	} 

	public void setBarDate(Date barDate) { 
		this.barDate = barDate; 
	} 

	@Override 
	public String toString() { 
		return "Bar{" + 
				"barName='" + barName + '\'' + 
				", barAge=" + barAge + 
				", barDate=" + barDate + 
				'}'; 
	} 
}



package lavasoft.stu.json; 

import com.alibaba.fastjson.JSON; 
import com.alibaba.fastjson.JSONArray; 
import com.alibaba.fastjson.serializer.SerializeConfig; 
import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer; 

import java.util.*; 

/** 
* Created by 2IntelliJ IDEA. 
* 
* @author leizhimin 11-11-22 上午9:45 
*/ public class Test { 
	private static SerializeConfig mapping = new SerializeConfig(); static { 
		mapping.put(Date.class, new SimpleDateFormatSerializer("yyyy-MM-dd HH:mm:ss")); 
	} 

	public static void main(String[] args) { 
		Foo f1 = new Foo(); 
		Date date = new Date(); 
		String text = JSON.toJSONString(date, mapping); 
		System.out.println(text); 
		System.out.println(JSON.toJSONString(f1, true)); 
		String x2 =JSON.toJSONString(f1, mapping); 
		System.out.println(x2); 
	} 

	public static void json2List(){ 
		//List -> JSON array 
		List<Bar> barList = new ArrayList<Bar>(); 
		barList.add(new Bar()); 
		barList.add(new Bar()); 
		barList.add(new Bar()); 
		String json= JSON.toJSONString(barList, true); 
		System.out.println(json); 
		//JSON array -> List 
		List<Bar> barList1 = JSON.parseArray(json,Bar.class); 
		for (Bar bar : barList1) { 
			System.out.println(bar.toString()); 
		} 
	} 

	public static void json2Map(){ 
		//Map -> JSON Map<String,Bar> map = new HashMap<String, Bar>(); 
		map.put("a",new Bar()); 
		map.put("b",new Bar()); 
		map.put("c",new Bar()); 
		String json = JSON.toJSONString(map,true); 
		System.out.println(json); 
		//JSON -> Map Map<String,Bar> map1 = (Map<String,Bar>)JSON.parse(json); 
		for (String key : map1.keySet()) { 
			System.out.println(key+":"+map1.get(key)); 
		} 
	} 

	public static void array2JSON(){ 
		String[] arr_String    = {"a","b","c"}; 
		String json_arr_String = JSON.toJSONString(arr_String,true); 
		System.out.println(json_arr_String); 
		JSONArray jsonArray = JSON.parseArray(json_arr_String); 
		for (Object o : jsonArray) { 
			System.out.println(o); 
		} 
		System.out.println(jsonArray); 
	} 
	public static void array2JSON2(){ 
		Bar[] arr_Bar    = {new Bar(),new Bar(),new Bar()}; 
		String json_arr_Bar = JSON.toJSONString(arr_Bar,true); 
		System.out.println(json_arr_Bar); 
		JSONArray jsonArray = JSON.parseArray(json_arr_Bar); 
		for (Object o : jsonArray) { 
			System.out.println(o); 
		} 
		System.out.println(jsonArray); 
	} 

	public static void map2JSON(){ 
		Map map = new HashMap(); 
		map.put("a","aaa"); 
		map.put("b","bbb"); 
		map.put("c","ccc"); 
		String json=JSON.toJSONString(map); 
		System.out.println(json); 
		Map map1 = JSON.parseObject(json); 
		for (Object o : map.entrySet()) { 
			Map.Entry<String,String> entry = (Map.Entry<String,String>)o; 
			System.out.println(entry.getKey()+"--->"+entry.getValue()); 
		} 
	} 
}


Instructions :

SerializeConfig : Il s'agit d'une configuration spéciale pour certains processus de sérialisation dans le processus de sérialisation. Elle est utilisée ici pour définir le format de date.

Pour le processus de sérialisation de type complet qui nécessite un type, vous devez appeler la méthode JSON.toJSONStringZ().

Lorsque vous avez besoin d'embellir la sortie, vous devez activer le commutateur d'embellissement de sérialisation et définir le vrai paramètre dans la méthode.

Résultat de sortie :
"2011-11-23 23:30:33" { 
  "avBar":[{ 
    "barAge":174398800, 
    "barDate":1322062233062, 
    "barName":"sss_0.62378174" 
  },{ 
    "barAge":38938962, 
    "barDate":1322062233062, 
    "barName":"sss_0.36014742" 
  }], 
  "avString":["aaa","bbb","ccc"], 
  "avboolean":[true,false,true,true], 
  "avint":[1,2,3,4], 
  "bar":{ 
    "barAge":1601495948, 
    "barDate":1322062233062, 
    "barName":"sss_0.46644872" 
  }, 
  "dddd":1322062233046, 
  "listBar":[ 
    { 
      "barAge":-1090113522, 
      "barDate":1322062233062, 
      "barName":"sss_0.83562374" 
    }, 
    { 
      "barAge":478603194, 
      "barDate":1322062233062, 
      "barName":"sss_0.59483266" 
    }, 
    { 
      "barAge":1118357669, 
      "barDate":1322062233062, 
      "barName":"sss_0.9961642" 
    } 
  ], 
  "listString":[ 
    "listString1", 
    "listString2", 
    "listString3" 
  ], 
  "map":{"x":"s11111x","y":"s22222y","z":"s33333z"}, 
  "v_Date":1322062233046, 
  "vboolean":false, 
  "vbyte":64, 
  "vchar":"x", 
  "vdouble":22.203, 
  "vfloat":12.1, 
  "vint":65535, 
  "vlong":9999999, 
  "vshort":128 } 
{"avBar":[{"barAge":174398800,"barDate":"2011-11-23 23:30:33","barName":"sss_0.62378174"},{"barAge":38938962,"barDate":"2011-11-23 23:30:33","barName":"sss_0.36014742"}],"avString":["aaa","bbb","ccc"],"avboolean":[true,false,true,true],"avint":[1,2,3,4],"bar":{"barAge":1601495948,"barDate":"2011-11-23 23:30:33","barName":"sss_0.46644872"},"dddd":"2011-11-23 23:30:33","listBar":[{"barAge":-1090113522,"barDate":"2011-11-23 23:30:33","barName":"sss_0.83562374"},{"barAge":478603194,"barDate":"2011-11-23 23:30:33","barName":"sss_0.59483266"},{"barAge":1118357669,"barDate":"2011-11-23 23:30:33","barName":"sss_0.9961642"}],"listString":["listString1","listString2","listString3"],"map":{"x":"s11111x","y":"s22222y","z":"s33333z"},"v_Date":"2011-11-23 23:30:33","vboolean":false,"vbyte":64,"vchar":"x","vdouble":22.203,"vfloat":12.1,"vint":65535,"vlong":9999999,"vshort":128} 

Process finished with exit code 0

Petit exemple de test :

JSONObject json = new JSONObject();
json.put("aa", "11");
json.put("bb", "22");
json.put("cc", "33");String jsonStr = json.toString();
System.out.println(jsonStr);// {"aa":"11","bb":"22","cc":"33"}
	System.out.println(JSONObject.parseObject(jsonStr).get("aa"));// 11String o = "{'area':{'area':'1','pagetype':'home'},'pagetype':'home'}";
System.out.println(((Map) JSONObject.parseObject(o).get("area")).get("area"));// 1String text = JSON.toJSONString(o);Map<String, Object> userMap = 
		JSON.parseObject(o, new TypeReference<Map<String, Object>>() {});
System.out.println(((Map) userMap.get("area")).get("NotExsit"));// nullSystem.out.println(JSON.toJSONString((Map) userMap.get("area")));// {"area":"1","pagetype":"home"}

fastjson a très bien réussi tous les tests, et ses performances fonctionnelles sont n°1. Je l'aime bien. Sa qualité de code source est très élevée, et l'auteur l'a également pris. beaucoup de peine pour obtenir les meilleures performances, complètement supérieures aux autres bibliothèques json.

Si vous avez besoin d'obtenir d'autres informations connexes, vous pouvez cliquer sur : Objet ou tableau Fastjson vers JSON pour référence mutuelle.