首页 > 编程知识 正文

java解析json数据时要注意,java读取json文件

时间:2023-05-05 12:45:32 阅读:163682 作者:4538

本文实例分析了基于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程序设计有所帮助。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。