Android原生生成JSON与解析JSON

JSON数据是一种轻量级的数据交换格式,在Android中通常应用于客户端与服务器交互之间的数据传输。像现在在网上有很多解析JSON数据的jar包,但是归根到底用的都是Android原生解析JSON数据的方式,所以掌握Android原生解析JSON数据的方法相当重要。

下面分为生成JSON数据和解析JSON数据,所用的包是org.json

(1)生成JSON数据方法:

比如要生成一个这样的json文本

{

"phone" : ["12345678", "87654321"],    //数组

"name" : "dream9", // 字符串

"age" : 100, // 数值

"address" : { "country" : "china", "province" : "guangdong" }, // 对象

}

try {
			JSONObject obj = new JSONObject(); // 首先创建一个对象
			JSONArray phone = new JSONArray(); // 添加数据到数组中序号是从0递增的
			phone.put("12345678");
			phone.put("87654321");
			obj.put("phone", phone);
			obj.put("name", "dream9");
			obj.put("age", 100);
			JSONObject address = new JSONObject();
			address.put("country", "china");
			address.put("province", "jiangsu");
			obj.put("address", address);
			Log.e("huang", obj.toString());

结果:

(2)解析JSON数据方法(以上面那个为例):

private void anaylse(String data){
		try {
			JSONObject obj = new JSONObject((String)data);
			JSONArray phone = obj.getJSONArray("phone");
			for(int t=0; t<phone.length(); ++t){
				Log.e("huang", phone.getString(t));      //解析phone数组
			}
			Log.e("huang", obj.getString("name"));
			Log.e("huang", obj.getInt("age")+"");
			JSONObject o = obj.getJSONObject("address");
			Log.e("huang", o.getString("country"));
			Log.e("huang", o.getString("province"));
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

结果:

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-12 12:07:35

Android原生生成JSON与解析JSON的相关文章

android学习二十三(解析json格式数据)

前面我们已经掌握了xml格式数据的解析方式,那么接下来我们学习下如何解析json格式的数据.比起xml,json的主要优势在于它体积更小,在网络上传输的时候可以更省流量.但缺点在于,它的语义性差,看起来不如xml直观. 开始之前,先在自己的电脑apache-tomcat-6.0.39\webapps\ROOT路径目录下新建一个get_data.json的文件,然后编辑这个文件,并加入如下json格式的内容: [{"id":"5","version"

一行代码解析复杂JSON文件:利用Android自带的包解析JSON

上周写了一篇关于Android自带的org.JSON与JSONLIB相冲突的文章,今天我想写一下我对org.json使用的小心得 由于学校项目要求解析一个复杂JSON,所以就上网搜了一下,不过Google一搜JSON数据解析,会出现五花八门的结果,JSONLIB, GSON, FASTJSON等等,唯独没有对org.json的使用,其实Android自带的JSON解析包相当好用,其用法与JSONLIB类似,我是先用的JSONLIB,在JRE环境下用得好好的,到了Android下怎么都跑不通(原来

Android入门(二十二)解析JSON

原文链接:http://www.orlion.ga/687/ 解析JSON的方式有很多,主要有官方提供的 JSONObject,谷歌的开源库 GSON.另外,一些第三方的开源库如 Jackson.FastJSON等也非常不错. 假设JSON数据为: [{"id":"5","version":"5.5","name":"Angry Birds"}, {"id":&quo

JSON.parse 解析json字符串时,遇换行符报错

今天遇到后台返回的json字符串转对象时报错了,发现有个textarea提交的字段里有换行符. 错误原因:JSON.parse转json字符串时遇到一些特殊字符需要先转义,如图所示 可以用str.replace(/\n/g,"\\\\n")转义,'\\'转成单个'\','\\n'转成'\n',最后转成'\\n'这样就可以用parse转成对象时变为'\n',取出的字符串设置到html文本中\n被解析为换行. ECMA Script注明json字符串中需要转义的字符: 测试: 1.var

JSON序列化 解析JSON

var book = { title : "JavaScript", authors : ["Nickolas . Zakas"], edition : 3, year : 2011 }, jsonText; JSON序列化 //简单序列化 SON.stringify接受3个参数 第一个需要序列化的对象 第二个参数是一个过滤器 可以是数组也可以是一个函数 jsonText = JSON.stringify( book ); //过滤 结果只包含过滤器中的字段 jso

.net使用Newtonsoft.Json.dll解析json过程的几种特殊情况处理

.net用来解析json的库 Newtonsoft.Json.dll 按理说已十分强大,但调用人家的json总有意想不到的情况发生,你没办法要求别人传给你标准的json字符串给你下面是我遇到的几种情况及解决方法:情况1,字段中包含英文引号:{"title": "这个"笑话"一点也不好笑","flag": 0}情况2,{}开头结尾的字段前后有引号:{"content" : "{"微信&qu

Android开发之使用Gson解析Json数据

首先需要创建一个Gson对象 Gson gson = new Gson(); 调用gson的fromJson()方法 gson.fromJson(); 使用其两个参数的方法,第一个参数为需要解析的Json字符串,第二个参数为类.class 类中书写技巧: 1.逢{}创建对象,逢[]创建数组ArrayList,数组中的泛型为该数组包含的对象名 2.所有字段名称要与json返回的字段高度一致 该方法返回的类型是创建的类类型

android 访问web端与解析json,模拟用户登录

之前写过一个java web端的登录验证,最后返回一个json字符串. 字符串格式如下: {"appmsg":"账号或密码错误","appcode":0,"_default_boolean_a":false} 今天就结合着Android来写一个简单的登录. 注意: 在AndroidManifest.xml里给访问网络的权限 在写具体路径时,一定要注意不要用localhost,因为识别不了.一定要写具体的IP 步骤如下: 1.先

Android使用自带JSONObject解析JSON数据

import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.content.Context; public void allInfoFromJson(String jsonStr){ /*{ "listMsg":"数据获取成功", "list":[ {"busId":1,"bu