介绍
小编给大家分享一下json怎样解析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
, json是一种取代XML的数据结构,和XML相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。
<强>一、json解析之传统的json解析强>
1,生成json字符串
createJsonString公共静态字符串(字符串键,对象价值){ JSONObject JSONObject=new JSONObject (); jsonObject。put(关键字,值);返回jsonObject.toString (); }
<强> 2,解析JSON字符串强>
分为以下三种情况,一个JavaBean,一个列表数组,一个嵌套映射的列数组:
进口java.util.ArrayList; 进口java.util.HashMap; 进口java.util.Iterator; 进口并不知道; 进口java.util.Map; 进口org.json.JSONArray; 进口org.json.JSONObject; 进口com.android.myjson.domain.Person;/* * *完成对json数据的解析 * */公开课JsonTools { 公共静态人getPerson(字符串,字符串jsonString) { 人的人=new (); 尝试{ 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")); }捕捉(异常e) {//TODO:处理异常 } 返回的人; } 公共静态列表getperson(字符串,字符串jsonString) { 名单列表=new ArrayList (); 尝试{ JSONObject JSONObject=new JSONObject (jsonString);//返回json的数组 JSONArray JSONArray=jsonObject.getJSONArray(关键); for (int i=0;我& lt;jsonArray.length ();我+ +){ JSONObject jsonObject2=jsonArray.getJSONObject(我); 人的人=new (); person.setId (jsonObject2.getInt (“id")); person.setName (jsonObject2.getString (“name")); person.setAddress (jsonObject2.getString (“address")); list.add(人); } }捕捉(异常e) {//TODO:处理异常 } 返回列表; } 公共静态列表getList(字符串,字符串jsonString) { 名单列表=new ArrayList (); 尝试{ JSONObject JSONObject=new JSONObject (jsonString); JSONArray JSONArray=jsonObject.getJSONArray(关键); for (int i=0;我& lt;jsonArray.length ();我+ +){ 字符串味精=jsonArray.getString(我); list.add(味精); } }捕捉(异常e) {//TODO:处理异常 } 返回列表; } 公共静态List>listKeyMaps(字符串键, 字符串jsonString) { List>列表=new ArrayList> (); 尝试{ JSONObject JSONObject=new JSONObject (jsonString); JSONArray JSONArray=jsonObject.getJSONArray(关键); for (int i=0;我& lt;jsonArray.length ();我+ +){ JSONObject jsonObject2=jsonArray.getJSONObject(我); 地图地图=new HashMap (); 迭代器迭代器=jsonObject2.keys (); 而(iterator.hasNext ()) { 字符串json_key=iterator.next (); 对象json_value=https://www.yisu.com/zixun/jsonObject2.get (json_key); 如果(json_value==null) { json_value=" "; } 地图。把(json_key json_value); } list.add(地图); } }捕捉(异常e) {//TODO:处理异常 } 返回列表; } }
<强>二,JSON解析之GSON 强>
进口com.google.gson.Gson; 公开课JsonUtils { 公共静态字符串createJsonObject(对象obj) { Gson Gson=new Gson (); 字符串str=gson.toJson (obj); 返回str; } }//二,解析JSON 进口java.util.ArrayList; 进口并不知道; 进口java.util.Map; 进口com.google.gson.Gson; 进口com.google.gson.reflect.TypeToken; ; 公开课GsonTools { 公共GsonTools () {//TODO自动生成构造函数存根 }/* * * @param * @param jsonString * @param cls * @return */公共静态T getPerson(字符串jsonString类cls) { T T=零; 尝试{ Gson Gson=new Gson (); t=gson.fromJson (jsonString cls); }捕捉(异常e) {//TODO:处理异常 } 返回t; }/* * *使用Gson进行解析列表 * * @param * @param jsonString * @param cls * @return */公共静态列表getperson(字符串jsonString类cls) { 名单列表=new ArrayList (); 尝试{ Gson Gson=new Gson ();=gson.fromJson列表(jsonString,新的TypeToken> () { } . gettype ()); }捕捉(异常e) { } 返回列表; }/* * * @param jsonString * @return */公共静态列表getList(字符串jsonString) { 名单列表=new ArrayList (); 尝试{ Gson Gson=new Gson ();=gson.fromJson列表(jsonString,新的TypeToken> () { } . gettype ()); }捕捉(异常e) {//TODO:处理异常 } 返回列表; } 公共静态List>listKeyMaps(字符串jsonString) { List>列表=new ArrayList> (); 尝试{ Gson Gson=new Gson ();=gson.fromJson列表(jsonString, 新的TypeToken>在(){ } . gettype ()); }捕捉(异常e) {//TODO:处理异常 } 返回列表; } }json怎样解析