关键词:
用org.json以及谷歌提供gson来解析json数据的方式更好一些。安卓下通常采用以下几种方式解析json数据:
1、org.json包(已经集成到android.jar中了)
2、google提供的gson库
3、阿里巴巴的fastjson库
4、json-lib
以Google出品的Gson为例,具体步骤为:
1、首先,从 code.google.com/p/google-gson/downloads/list下载GsonAPI:
google-gson-1.7.1-release.zip 把gson-1.7.jar copy到libs(项目根目录新建一个libs文件夹)中。 可以使用以下两种方法解析JSON数据,通过获取JsonReader对象解析JSON数据。
代码如下:
String jsonData = "[\\"username\\":\\"arthinking\\",\\"userId\\":001,\\"username\\":\\"Jason\\",\\"userId\\":002]";
try
JsonReader reader = new JsonReader(new StringReader(jsonData));
reader.beginArray();
while(reader.hasNext())
reader.beginObject();
while(reader.hasNext())
String tagName = reader.nextName();
if(tagName.equals("username"))
System.out.println(reader.nextString());
else if(tagName.equals("userId"))
System.out.println(reader.nextString());
reader.endObject();
reader.endArray();
catch(Exception e)
e.printStackTrace();
2、使用Gson对象获取User对象数据进行相应的操作:
代码如下:
Type listType = new TypeToken<LinkedList<User>>().getType();
Gson gson = new Gson();
LinkedList<User> users = gson.fromJson(jsonData, listType);
for (Iterator iterator = users.iterator(); iterator.hasNext();)
User user = (User) iterator.next();
System.out.println(user.getUsername());
System.out.println(user.getUserId());
3、如果要处理的JSON字符串只包含一个JSON对象,则可以直接使用fromJson获取一个User对象:
代码如下:
String jsonData = "\\"username\\":\\"arthinking\\",\\"userId\\":001";
Gson gson = new Gson();
User user = gson.fromJson(jsonData, User.class);
System.out.println(user.getUsername());
System.out.println(user.getUserId()); 参考技术A 一、什么是JSON?
JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。
JSON就是一串字符串 只不过元素会使用特定的符号标注。
双括号表示对象
[] 中括号表示数组
"" 双引号内是属性或值
: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)
所以 "name": "Michael" 可以理解为是一个包含name为Michael的对象
而["name": "Michael","name": "Jerry"]就表示包含两个对象的数组
当然了,你也可以使用"name":["Michael","Jerry"]来简化上面一部,这是一个拥有一个name数组的对象
二、JSON解析之传统的JSON解析
1、生成JSOn字符串
public static String createJsonString(String key, Object value)
JSONObject jsonObject = new JSONObject();
jsonObject.put(key, value);
return jsonObject.toString();
2、解析JSON字符串
分为以下三种情况,一个JavaBean,一个List数组,一个嵌套Map的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.myjson.domain.Person;
/**
* 完成对json数据的解析
*
*/
public class JsonTools
public static Person getPerson(String key, String jsonString)
Person person = new Person();
try
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"));
catch (Exception e)
// TODO: handle exception
return person;
public static List getPersons(String key, String jsonString)
List list = new ArrayList();
try
JSONObject jsonObject = new JSONObject(jsonString);
// 返回json的数组
JSONArray jsonArray = jsonObject.getJSONArray(key);
for (int i = 0; i < jsonArray.length(); i++)
JSONObject jsonObject2 = jsonArray.getJSONObject(i);
Person person = new Person();
person.setId(jsonObject2.getInt("id"));
person.setName(jsonObject2.getString("name"));
person.setAddress(jsonObject2.getString("address"));
list.add(person);
catch (Exception e)
// 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;
二、解析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是效率最高的,推荐使用。
转载本回答被提问者和网友采纳
androidjson数据解析(gson方式)
要创建和解析JSON数据,也可以使用GSON来完成。GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。使用GSON,可以很容易的将一串JSON数据转换为一个Java对象,或是将一个Java对象转换为相应的JSON数据。 1.GSON的... 查看详情
java有几种文件拷贝方式,哪一种效率最高?
常见的有三种文件拷贝方式 io下的包会把数据从内核态拷贝到用户态,nio下的包则可以避免不必要的拷贝和上下文切换提高数据拷贝的效率。作者:你的雷哥 查看详情
androidjson解析kotlin
前面写了一次kotlin解析json但是,真的写得太烂,直接删掉了,现在重新整理一下。顺便记录一下今天坑了我很久的小问题。 1.首先从最简单的入手吧 一个json的字符串:=====就叫做jsonString吧 { "code":... 查看详情
java中一下两种方式遍历数组哪种效率高?
...va.util.ArrayList;importjava.util.Iterator;importjava.util.List;/***list的三种遍历*@authorOwner**/publicclassListTestpublicstaticvoidmain(String[]args)List<String>list=newArrayList<String>();list.add("a");list.add("b");list.add("c");list.add("c&quo 查看详情
androidjson解析fastjson和gson的使用
Useruser=newUser();user.setPhone("11111111");user.setNmae("张三");user.setPhone("twtwtwtwtwtwtwtwtwtwtwtwtwtwtwtwtw");List<User>users=newArrayList<>();users.add(user);users.add(user);users.a 查看详情
androidjson解析多个对象(代码片段)
我有这样的JSON:"Temperature":"Name":"Temperature","Value":"26.19","Unit":"C","Humidity":"Name":"Humidity","Value":"29.38%","Unit":"%"我想将它保存到相同类型的对象列表中。这是我的班级:publicclassMeasurementprivateStringname; 查看详情
扯一把spring的三种注入方式,到底哪种注入方式最佳?(代码片段)
文章目录1.实例的注入方式1.1属性注入1.2set方法注入1.3构造方法注入2.实例注入方式大PK3.小结循环依赖这个问题,按理说我们在日常的程序设计中应该避免,其实这个本来也是能够避免的。不过由于总总原因,我们可... 查看详情
qt中三种解析xml的方式
在下面的随笔中,我会根据xml的结构,给出Qt中解析这个xml的三种方式的代码。虽然,这个代码时通过调用Qt的函数实现的,但是,很多开源的C++解析xml的库,甚至很多其他语言解析xml的库,都和下面三种解析xml采用相同的原理... 查看详情
java中list对象的三种遍历方式
1.增强for循环for(Stringstr:list){//其内部实质上还是调用了迭代器遍历方式,这种循环方式还有其他限制,不建议使用。System.out.println(str);}2.普通for循环for(inti=0;i<list.size();i++){//内部不锁定,效率最高,但在多线程要考虑并发操作... 查看详情
androidjson解析架包(阿里巴巴的fastjson)处理是报异常。
异常显示:com.alibaba.fastjson.JSONException:exepct'[',but怎么解决。参考技术A应该是json字符串的格式有问题吧,先找找看有问题没有,没有的话再看解析的时候哪里有逻辑问题没有,不行就把报错的那几行代码和json字符串贴出来... 查看详情
解析xml文件的三种方式及其特点
解析Xml文件的三种方式1、Sax解析(simpleapi forxml) 使用流式处理的方式,它并不记录所读内容的相关信息。它是一种以事件为驱动的XMLAPI,解析速度快,占用内存少。使用回调函数来实现。 1classMyDefaultHanderextendsDefault... 查看详情
python解析参数的三种方法
...parse,它是一个流行的Python模块,专门用于命令行解析;另一种方法是读取JSON文件,我们可以在其中放 查看详情
androidjson文件解析为类对象出现以下错误,求解答。
Causedby:java.lang.IllegalStateException:ExpectedBEGIN_OBJECTbutwasSTRINGatline1column123JSON文件:"Data":"uid":19880890,"token":"d8dc52ba46e84685ab5549c01764dd9b","name":"benlixmu@gmail.com","Detail":"登入成功",&... 查看详情
三种数据解析方式(代码片段)
第一种:xpath使用流程:下载:pipinstalllxml导包:fromlxmlimportetree创建etree对象进行指定数据的解析 本地:etree=etree.parse(‘本地文件路径‘) e 查看详情
androidjson处理框架
1、Android中的Json解析工具fastjson、序列化、反序列化2、AndroidGson的使用总结3、Android-JSONTool 一个简易的Json框架类,小到只有一个类 有时为了简化代码的大小,尽可能的压缩apk的大小。就不能再使用大而全的框架... 查看详情
java解析xml的几种方式哪种最好?
参考技术A(1)DOM解析DOM是html和xml的应用程序接口(API),以层次结构(类似于树型)来组织节点和信息片段,映射XML文档的结构,允许获取;(2)SAX(SimpleAPIforXML)解析流模型中的"推"模型分析方式。通过事件驱动,每发现一个节... 查看详情
json的三种解析方式
http://www.cnblogs.com/zhujiabin/p/5498272.html一、什么是JSON?JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。JSON就是一串字符串只不过元素会使用特定的... 查看详情
爬虫-三种数据解析方式(代码片段)
...为重要的一步,就是在持久化存储之前需要进行指定数据解析。因为大多数情况下的需求,我们都会指定去使用聚焦爬虫,也就是爬取页面中指定部分的数据值,而不是整个页面的数据。因此,本次课程中会给大家详细介绍讲解... 查看详情