Json 有点像序列化和反序列化。
一种是Android 自带的,另一种是第三方的Gson。
Gson解析;最大的特点就是获取非常方便。不管是获取一个变量还以一个List集合,还是含有Map集合的List集合。都可以通过gson.fromJson()来获取
参考:http://blog.csdn.net/rodulf/article/details/50917651
注:Gson 需要导入,导入之后需要刷新,不然不可以使用。
代码如下:
Json解析的方法Android自带的和Gson
package tech.androidstudio.jsongsondemo; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //TODO 使用种方法来解析Json的数据,一种是Android 自带的,另一种是第三方的Gson。 //Android 自带的使用 ******************************** String jsonStr = "{status:2,result:[{name:'你好',age:1}, {name:'Android',age:5},{name:'Studio',age:7}]} "; List<Person> jsonList = new ArrayList<Person>(); try { JSONObject jsonObject = new JSONObject(jsonStr); JSONArray result = jsonObject.getJSONArray("result"); for (int i = 0; i < result.length(); i++) { Person person = new Person(); JSONObject jsonPerson = result.getJSONObject(i); person.setName(jsonPerson.getString("name")); person.setAge(jsonPerson.getInt("age")); jsonList.add(person); } } catch (JSONException e) { e.printStackTrace(); } Log.d("Kodulf","Android 自带的json解析得到的数据:"+jsonList.toString()); //第三方Gson的 使用****************************************** //[{"name":"name0","age":0}] //修改后{name:'name0',age:0},要去掉前后的括号。 String gsonStr1= "{name:'name0',age:0}"; Gson gson = new Gson(); Person person = gson.fromJson(gsonStr1, Person.class); Log.d("Kodulf", "Gson 解析一个Person的信息得到 :" + person.toString()); String gsonStr2= "[{name:'name0',age:0},{name:'name1',age:5},{name:'name2',age:10},{name:'name3',age:15},{name:'name4',age:20},{name:'name5',age:25},{name:'name6',age:30},{name:'name7',age:35},{name:'name8',age:40},{name:'name9',age:45}]"; List<Person> gsonPerson=gson.fromJson(gsonStr2, new TypeToken<List<Person>>(){}.getType()); Log.d("Kodulf","Gson 解析一个Person List的信息得到 :"+gsonPerson.toString()); } }
Ps,Gson 也可以写成一个通用的工具类:
import java.util.List; import java.util.Map; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; public class GsonTool { public static <T> T getObj(String jsonStr,Class<T> cls) { T t = null; Gson gson = new Gson(); t = gson.fromJson(jsonStr, cls); return t; } public static <T> List<T> getList(String jsonStr) { List<T> list = null; Gson gson = new Gson(); list = gson.fromJson(jsonStr, new TypeToken<List<T>>(){}.getType()); return list; } public static List<Map<String,Object>> getListMap(String jsonStr) { List<Map<String,Object>> list = null; Gson gson = new Gson(); list = gson.fromJson(jsonStr, new TypeToken<List<Map<String,Object>>>(){}.getType()); return list; } }
import
java.util.List;
import
java.util.Map;
import
com.google.gson.Gson;
import
com.google.gson.reflect.TypeToken;
public class
GsonTool {
public static
<T> T getObj(String jsonStr,Class<T> cls) { T t =
null
; Gson gson =
new
Gson(); t = gson.fromJson(jsonStr, cls);
return
t; }
public static
<T> List<T> getList(String jsonStr) { List<T> list =
null
; Gson gson =
new
Gson(); list = gson.fromJson(jsonStr,
new
TypeToken<List<T>>(){}.getType());
return
list; }
public static
List<Map<String,Object>> getListMap(String jsonStr) { List<Map<String,Object>> list =
null
; Gson gson =
new
Gson(); list = gson.fromJson(jsonStr,
new
TypeToken<List<Map<String,Object>>>(){}.getType());
return
list; } }