This article analyzes three ways of parsing JSON based on Java. Share it for your reference, as follows:
1. What is JSON?
JSON is a data structure that replaces XML. Compared with XML, it is smaller but has good description capabilities. Due to its smallness, the network transmits data to reduce more traffic and speed up.
JSON is a string of strings, but elements are marked with specific symbols.
{} Double brackets represent objects
[] brackets represent array
"" In double quotes are attributes or values
: The colon indicates that the latter is the value of the former (this value can be a string, a number, or another array or object)
So {"name": "Michael"} can be understood as an object containing name as Michael
And [{"name": "Michael"},{"name": "Jerry"}] means an array containing two objects
Of course, you can also use {"name":["Michael","Jerry"]} to simplify the above, which is an object with an array of names.
2. Traditional JSON analysis: JSON analysis
1. Generate json string
public static String createJsonString(String key, Object value) { JSONObject jsonObject = new JSONObject(); jsonObject.put(key, value); return jsonObject.toString();}2. Parsing JSON strings
It is divided into the following three situations: a JavaBean, a List array, and a List array with nested Map:
import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import org.json.JSONArray;import org.json.JSONObject;import com.android.myjson.domain.Person;/** * Complete the parsing of json data* */public class JsonTools { public static Person getPerson(String key, String jsonString) { Person person = new Person(); try { JSONObject jsonObject = new JSONObject(jsonString); JSONObject personObject = jsonObject.getJSONObject("person"); person.setId(personObject.getInt("id")); person.setName(personObject.getString("name")); person.setAddress(personObject.getString("address")); } catch (Exception e) { // TODO: handle exception } return person; } public static List getPersons(String key, String jsonString) { List list = new ArrayList(); try { JSONObject jsonObject = new JSONObject(jsonString); // Return the array of json JSONArray jsonArray = jsonObject.getJSONArray(key); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject2 = jsonArray.getJSONObject(i); Person person = new Person(); person.setId(jsonObject2.getInt("id")); person.setName(jsonObject2.getString("name")); person.setAddress(jsonObject2.getString("address")); list.add(person); } } catch (Exception e) { // TODO: handle exception } return list; } public static List getList(String key, String jsonString) { List list = new ArrayList(); try { JSONObject jsonObject = new JSONObject(jsonString); JSONArray jsonArray = jsonObject.getJSONArray(key); for (int i = 0; i < jsonArray.length(); i++) { String msg = jsonArray.getString(i); list.add(msg); } } catch (Exception e) { // TODO: handle exception } return list; } public static List> listKeyMaps(String key, String jsonString) { List> list = new ArrayList>(); try { JSONObject jsonObject = new JSONObject(jsonString); JSONArray jsonArray = jsonObject.getJSONArray(key); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsonObject2 = jsonArray.getJSONObject(i); Map map = new HashMap(); Iterator iterator = jsonObject2.keys(); while (iterator.hasNext()) { String json_key = iterator.next(); Object json_value = jsonObject2.get(json_key); if (json_value == null) { json_value = ""; } map.put(json_key, json_value); } list.add(map); } } catch (Exception e) { // TODO: handle exception } return list; }}3. GSON analysis of JSON
1. Generate JSON string
import com.google.gson.Gson;public class JsonUtils { public static String createJsonObject(Object obj) { Gson gson = new Gson(); String str = gson.toJson(obj); return str; }}2. Analyze JSON
import java.util.ArrayList;import java.util.List;import java.util.Map;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;;public class GsonTools { public GsonTools() { // TODO Auto-generated constructor stub } /** * @param * @param jsonString * @param cls * @return */ public static T getPerson(String jsonString, Class cls) { T t = null; try { Gson gson = new Gson(); t = gson.fromJson(jsonString, cls); } catch (Exception e) { // TODO: handle exception } return t; } /** * Use Gson to parse List * * @param * @param jsonString * @param cls * @return */ public static List getPersons(String jsonString, Class cls) { List list = new ArrayList(); try { Gson gson = new Gson(); list = gson.fromJson(jsonString, new TypeToken>() { }.getType()); } catch (Exception e) { } return list; } /** * @param jsonString * @return */ public static List getList(String jsonString) { List list = new ArrayList(); try { Gson gson = new Gson(); list = gson.fromJson(jsonString, new TypeToken>() { }.getType()); } catch (Exception e) { // TODO: handle exception } return list; } public static List> listKeyMaps(String jsonString) { List> list = new ArrayList>(); try { Gson gson = new Gson(); list = gson.fromJson(jsonString, new TypeToken>>() { }.getType()); } catch (Exception e) { // TODO: handle exception } return list; }}4. FastJSON parsing
import java.util.ArrayList;import java.util.List;import java.util.Map;import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.TypeReference;public class JsonTool { public static T getPerson(String jsonstring, Class cls) { T t = null; try { t = JSON.parseObject(jsonstring, cls); } catch (Exception e) { // TODO: handle exception } return t; } public static List getPersonList(String jsonstring, Class cls) { List list = new ArrayList(); try { list = JSON.parseArray(jsonstring, cls); } catch (Exception e) { // TODO: handle exception } return list; } public static List> getPersonListMap1( String jsonstring) { List> list = new ArrayList>(); try { list = JSON.parseObject(jsonstring, new TypeReference>>() { }.getType()); } catch (Exception e) { // TODO: handle exception } return list; }}Summarize:
For mobile devices, especially in the case of poor network environment and traffic limitations, JSON will save traffic and have higher transmission efficiency compared to XML format data transmission. Among these three analytical methods, FastJson is the most efficient and is recommended.
PS: Regarding json operation, here are some practical json online tools for your reference: Online JSON code verification, inspection, beautification and formatting tools: JSON online formatting tool: Online XML/JSON mutual conversion tool: json code online formatting/beautification/compression/editing/converting tools: Online json compression/escaping tools: C language style/HTML/CSS/json code formatting and beautification tools:
http://tools.VeVB.COM/code/json
http://tools.VeVB.COM/code/jsonformat
http://tools.VeVB.COM/code/xmljson
http://tools.VeVB.COM/code/jsoncodeformat
http://tools.VeVB.COM/code/json_yasuo_trans
http://tools.VeVB.COM/code/ccode_html_css_json
I hope this article will be helpful to everyone's Java programming.