本文实例分析了基于java分析JSON的三种方式。 共享仅供参考。 具体情况如下。
一.什么是JSON?
JSON是代替XML的数据结构,虽然比XML小型,但记述能力并不差。 由于体积小,网络上的数据传输量减少,处理速度加快。
Jon是一系列字符串,但会使用特定的符号标记元素。
{}双引号表示对象
[]大括号表示数组
“”双引号中是属性或值
:冒号表示后者是前者的值。 该值可以是字符串、数字或其他数组或对象
因此,{'name': 'xxdbm'}可以被理解为包括name为xxdbm的对象
此外,[{'name': 'xxdbm'},{'name': '聪明的氛围' } ]表示包含两个对象的数组
当然,您也可以使用{'name':['xxdbm ','聪明的氛围' ]}来简化以上内容。 这是一个具有name数组的对象
二. JSON分析传统JSON分析
1、生成json字符串
publicstaticstringcreatejsonstring (string key,Object value ) {
jsonobjectjsonobject=newjsonobject (;
Jonobject.put(key,value );
return jsonObject.toString (;
}
2、解析JSON字符串
分为三种情况: JavaBean、List数组和嵌套映射的List数组。
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.my JSON.domain.person;
//*
完成json数据的分析
*
*/
公共类JSON tools {
publicstaticpersongetperson (string key,String jsonString ) {
人员=新人员(;
try {
jsonobjectjsonobject=newjsonobject (JSON string );
jsonobjectpersonobject=JSON object.getjsonobject (person );
person.setid (person object.getint ) (id );
person.set name (person object.getstring (' name ) );
person.set address (person object.getstring (' address ) );
}catch(exceptione ) {
//TODO: handle exception
}
返回人员;
}
publicstaticlistgetpersons (string key,String jsonString ) {
List list=new ArrayList (;
try {
jsonobjectjsonobject=newjsonobject (JSON string );
返回json的数组
jsonarrayjsonarray=JSON object.getjsonarray (key;
for(intI=0; i jsonArray.length (; I ) {
jsonobjectjsonobject2=JSON array.getjsonobject (I;
人员=新人员(;
person.setid (JSON object2. getint ) ) id );
person.set name (JSON object2. getstring (' name ) );
person.set address (JSON object2. getstring (' address ) );
list.add (个人;
}
}catch(exceptione ) {
//
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;
}
}
三、JSON解析之GSON
1、生成JSON字符串
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、解析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;
}
/**
* 使用Gson进行解析 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;
}
}
四、JSON解析之FastJSON
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;
}
}
总结:
JSON对于移动设备来说,尤其对于网络环境较差和流量限制的情况下,相对于XML格式的数据传输会更节省流量,传输效率更高。在这三种解析方式中FastJson是效率最高的,推荐使用。
希望本文所述对大家java程序设计有所帮助。