Android中JSON数据的解析
2016-03-13 15:05
435 查看
JSON数据:是一款轻量级的数据交换语言,全称:JavaScript Object Notation
Json对象是一个无序的“名称/值,对”集合,
Xml:
<user>
<name>ZS</name>
<age>22</age>
<gender>m</gender>
<aihao>c</aihao>
<aihao>h</aihao>
<aihao>w</aihao>
<aihao>l</aihao>
<school>
<name>tarena</name>
<loc>bj</loc>
</school>
</user>
Json:{
"name":"zs",
"age":20,
"gender":"m",
"aihao":["c", "h", "w", "l"],
"married":false,
"school":
{"name":"tarena","loc":"bj"}
}
String str={
"name":"zs",
"age":20,
"gender":"m",
"aihao":["c", "h", "w", "l"],
"married":false,
"school":
{"name":"tarena","loc":"bj"}
};
================================
JSONObject obj=new JSONObject(str);
String name=obj.getString("name");
int age=obj.getInt("age");
boolean m=obj.getBoolean("married");
JSONArray ary=obj.getJSONArray("aihao");
JSONObject o2=obj.getJSONObject("school");
o2.getString("name")
obj.getJSONObject("school").getString("loc")
============================================
JSONArray JSON数组
String str=[
{"name":"zs"},
"hello",
true,
["c","h"]
];
JSONArray ary=new JSONArray(str);
ary.length() JSONArray的长度
ary.getJSONObject(0).getString("name")
ary.getString(1)
ary.getJSONArray(3).getString(1)
================================================
2. Gson支持任意复杂Java对象包括没有源代码的对象
package com.nizk;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class GsonTools {
public GsonTools(){
}
public static String createGsonString(Object object){
Gson gson =new Gson();
String gsonString =gson.toJson(object);
return gsonString;
}
public static <T> T changeGsonToBean(String gsonString, Class<T> cls) {
Gson gson = new Gson();
T t = gson.fromJson(gsonString, cls);
return t;
}
public static <T> List<T> changeGsonToList(String gsonString, Class<T> cls) {
Gson gson = new Gson();
List<T> list_person = gson.fromJson(gsonString,
new TypeToken<List<T>>() {
}.getType());
return list_person;
}
public static List<Map<String, Object>> changeGsonToListMaps(String gsonString) {
List<Map<String, Object>> list = null;
Gson gson = new Gson();
list = gson.fromJson(gsonString,
new TypeToken<List<Map<String, Object>>>() {
}.getType());
return list;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// Person person1 = new Person("张三1", 24, "北京1");
// Person person2 = new Person("张三2", 23, "北京2");
// List<Person> list = new ArrayList<Person>();
// list.add(person1);
// list.add(person2);
//
// String gsonString = createGsonString(list);
// System.out.println(gsonString);
// Gson gson = new Gson();
// List<Person> list_person = changeGsonToList(gsonString,Person.class);
// System.out.println(list_person.toString());
// Person pp = changeGsonToBean(gsonString,Person.class);
// System.out.println(pp);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "jack");
map.put("age", 23);
Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("name", "rose");
map2.put("age", 24);
list.add(map);
list.add(map2);
String gsonString = createGsonString(list);
System.out.println(gsonString);
List<Map<String, Object>> list2 = changeGsonToListMaps(gsonString);
System.out.println(list2.toString());
}
}
2.速度最快,测试表明,fastjson具有极快的性能,超越其他的Java Json parse,包括自称最快的JackJson
3.功能强大,完成支持JavaBean、集合、Map、日期、emum、支持泛型,支持自省
4.无依赖,能够直接运行在Java SE5.0以上版本
5、支持android ,开源(Apache2.0)
package com.nizk;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
public class Myfastjson {
public Myfastjson(){
}
public static String createJsonString(Object object){
String jsonString =JSON.toJSONString(object);
return jsonString;
}
public static <T> T createJsonBean(String jsonString,Class<T> cls){
T t =JSON.parseObject(jsonString, cls);
return t;
}
public static <T> List<T> createJsonToListBean(String jsonString,Class<T> cls){
List<T> list =null;
list =JSON.parseArray(jsonString, cls);
return list;
}
public static List<Map<String, Object>> createJsonToListMap(String jsonString){
List<Map<String, Object>> list2 =JSON.parseObject(jsonString,
new TypeReference<List<Map<String,Object>>>(){
});
return list2;
}
public static void main(String[] args) {
List<Map<String, Object>> list =new ArrayList<Map<String,Object>>();
Map<String, Object> map =new HashMap<String, Object>();
map.put("name", "jack");
map.put("age", 23);
Map<String, Object> map1 =new HashMap<String, Object>();
map1.put("name", "rose");
map1.put("age", 23);
list.add(map);
list.add(map1);
String jsonString =JSON.toJSONString(list);
System.out.println(jsonString);
List<Map<String, Object>> list2 =JSON.parseObject(jsonString,
new TypeReference<List<Map<String,Object>>>(){
});
System.out.println(list2.toString());
}
}
Json对象是一个无序的“名称/值,对”集合,
Xml:
<user>
<name>ZS</name>
<age>22</age>
<gender>m</gender>
<aihao>c</aihao>
<aihao>h</aihao>
<aihao>w</aihao>
<aihao>l</aihao>
<school>
<name>tarena</name>
<loc>bj</loc>
</school>
</user>
Json:{
"name":"zs",
"age":20,
"gender":"m",
"aihao":["c", "h", "w", "l"],
"married":false,
"school":
{"name":"tarena","loc":"bj"}
}
Android中如何解析Json?
JsonObject Json对象String str={
"name":"zs",
"age":20,
"gender":"m",
"aihao":["c", "h", "w", "l"],
"married":false,
"school":
{"name":"tarena","loc":"bj"}
};
================================
JSONObject obj=new JSONObject(str);
String name=obj.getString("name");
int age=obj.getInt("age");
boolean m=obj.getBoolean("married");
JSONArray ary=obj.getJSONArray("aihao");
JSONObject o2=obj.getJSONObject("school");
o2.getString("name")
obj.getJSONObject("school").getString("loc")
============================================
JSONArray JSON数组
String str=[
{"name":"zs"},
"hello",
true,
["c","h"]
];
JSONArray ary=new JSONArray(str);
ary.length() JSONArray的长度
ary.getJSONObject(0).getString("name")
ary.getString(1)
ary.getJSONArray(3).getString(1)
================================================
谷歌Gson技术解析:
1.GSON 这个java类库可以把java对象转换成Json,也可以把Json字符串转换成一个相等的Java对象2. Gson支持任意复杂Java对象包括没有源代码的对象
package com.nizk;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class GsonTools {
public GsonTools(){
}
public static String createGsonString(Object object){
Gson gson =new Gson();
String gsonString =gson.toJson(object);
return gsonString;
}
public static <T> T changeGsonToBean(String gsonString, Class<T> cls) {
Gson gson = new Gson();
T t = gson.fromJson(gsonString, cls);
return t;
}
public static <T> List<T> changeGsonToList(String gsonString, Class<T> cls) {
Gson gson = new Gson();
List<T> list_person = gson.fromJson(gsonString,
new TypeToken<List<T>>() {
}.getType());
return list_person;
}
public static List<Map<String, Object>> changeGsonToListMaps(String gsonString) {
List<Map<String, Object>> list = null;
Gson gson = new Gson();
list = gson.fromJson(gsonString,
new TypeToken<List<Map<String, Object>>>() {
}.getType());
return list;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// Person person1 = new Person("张三1", 24, "北京1");
// Person person2 = new Person("张三2", 23, "北京2");
// List<Person> list = new ArrayList<Person>();
// list.add(person1);
// list.add(person2);
//
// String gsonString = createGsonString(list);
// System.out.println(gsonString);
// Gson gson = new Gson();
// List<Person> list_person = changeGsonToList(gsonString,Person.class);
// System.out.println(list_person.toString());
// Person pp = changeGsonToBean(gsonString,Person.class);
// System.out.println(pp);
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
map.put("name", "jack");
map.put("age", 23);
Map<String, Object> map2 = new HashMap<String, Object>();
map2.put("name", "rose");
map2.put("age", 24);
list.add(map);
list.add(map2);
String gsonString = createGsonString(list);
System.out.println(gsonString);
List<Map<String, Object>> list2 = changeGsonToListMaps(gsonString);
System.out.println(list2.toString());
}
}
阿里巴巴FastJson技术解析:
1.FastJson送是一个Json处理工具包,包括序列号和反序列化两个部分:2.速度最快,测试表明,fastjson具有极快的性能,超越其他的Java Json parse,包括自称最快的JackJson
3.功能强大,完成支持JavaBean、集合、Map、日期、emum、支持泛型,支持自省
4.无依赖,能够直接运行在Java SE5.0以上版本
5、支持android ,开源(Apache2.0)
package com.nizk;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
public class Myfastjson {
public Myfastjson(){
}
public static String createJsonString(Object object){
String jsonString =JSON.toJSONString(object);
return jsonString;
}
public static <T> T createJsonBean(String jsonString,Class<T> cls){
T t =JSON.parseObject(jsonString, cls);
return t;
}
public static <T> List<T> createJsonToListBean(String jsonString,Class<T> cls){
List<T> list =null;
list =JSON.parseArray(jsonString, cls);
return list;
}
public static List<Map<String, Object>> createJsonToListMap(String jsonString){
List<Map<String, Object>> list2 =JSON.parseObject(jsonString,
new TypeReference<List<Map<String,Object>>>(){
});
return list2;
}
public static void main(String[] args) {
List<Map<String, Object>> list =new ArrayList<Map<String,Object>>();
Map<String, Object> map =new HashMap<String, Object>();
map.put("name", "jack");
map.put("age", 23);
Map<String, Object> map1 =new HashMap<String, Object>();
map1.put("name", "rose");
map1.put("age", 23);
list.add(map);
list.add(map1);
String jsonString =JSON.toJSONString(list);
System.out.println(jsonString);
List<Map<String, Object>> list2 =JSON.parseObject(jsonString,
new TypeReference<List<Map<String,Object>>>(){
});
System.out.println(list2.toString());
}
}
相关文章推荐
- asp对复杂json的解析一定要注意要点
- JSON序列化与解析原生JS方法且IE6和chrome测试通过
- Android 解析JSON对象及实例说明
- 收集json解析的四种方法分享
- java代码解析json对象获取json对象属性值
- 学习json post请求和json解析
- swift JSON字符串解析 json parse / json decode
- json解析效率对比
- 什么是json以及json解析
- Cocos2d/x 解析服务器JSON数据
- Json与对象的相互转换
- 有没有人可以帮我解析一下下面的json
- android解析json串
- 基本HTTP请求+JSON解析+发送异步请求
- Gson 转换树型结构的实例
- json解析简单事例
- Volley完全解析
- 如何使用json-lib解析有2层嵌套的list数据,然后放到对应的bean中
- android 解析json
- 动态解析 嵌套JSON数据源