Json学习

网络数据的传输经常会使用到XML及Json。它们各有优势,有兴趣的同学可以参考:

http://blog.csdn.net/sanpintian/article/details/7347711

此处只说一点,Json更轻量级,在Android开发中更显优势(可以节省流量)。下面就简单介绍以下Json的使用:


一、构建Json文本

有两种方法构建Json文本:

1、使用JSONObject和JSONArray构建

2、使用JSONStringer构建

package jsonObjectTest;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.util.JSONStringer;

public class StructureJson {
	
	/**
	 * 使用JSONObject、JSONArray构建
	 * @return
	 */
	public static JSONObject createJson(){
		JSONObject root=new JSONObject();
		
		root.put("name", "Annie Liu");
		
		JSONArray phone=new JSONArray();
		phone.add("13786863819");
		phone.add("13807380553");
		
		root.put("phone", phone);
		
		JSONArray experience=new JSONArray();
		
		JSONObject experience1=new JSONObject();
		experience1.put("name", "congxin");
		experience1.put("duration", "six month");
		experience1.put("position", "Java programmer");
		experience.add(experience1);
		
		JSONObject experience2=new JSONObject();
		experience2.put("name", "gzcss");
		experience2.put("duration", "twelve month");
		experience2.put("position", "Java programmer");
		experience.add(experience2);
		
		root.put("experience", experience);
		
		root.put("married", false);
		
		return root;
	}
	
	/**
	 * 使用JSONStringer来构建Json
	 * @return
	 */
	public static String createJsonByJSONStringer(){

		JSONStringer stringer=new JSONStringer();
		stringer.object();
		stringer.key("name").value("Annie Liu");
		stringer.key("phone");
		stringer.array();
		stringer.value("13786863819").value("13807380553");
		stringer.endArray();
		stringer.key("experience");
		stringer.array();
		stringer.object();
		stringer.key("name").value("congxin");
		stringer.key("duration").value("six month");
		stringer.key("position").value("Java programmer");
		stringer.endObject();
		stringer.object();
		stringer.key("name").value("gzcss");
		stringer.key("duration").value("twelve month");
		stringer.key("position").value("Java programmer");
		stringer.endObject();
		stringer.endArray();
		stringer.key("married").value(false);
		stringer.endObject();
		
		
		return stringer.toString();
	}
	
	public static void main(String[] args) {
		JSONObject jsonObject=createJson();
		System.out.println(jsonObject);
		
		String jsonObject2=createJsonByJSONStringer();
		System.out.println(jsonObject2);
		
	}

}


二、解析JSON文本:JSONTokener


package jsonObjectTest;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.util.JSONTokener;

public class JSONParser {
	
	public static void parse(String str){
		JSONTokener jsonTokener=new JSONTokener(str);
		JSONObject jsonObject=(JSONObject)jsonTokener.nextValue();
		
		String name=jsonObject.getString("name");
		System.out.println("name:"+name);
		
		JSONArray phoneArray=jsonObject.getJSONArray("phone");
		String phone="";
		for(int i=0;i<phoneArray.size();i++){
			phone+=phoneArray.getString(i)+",";			
		}
		phone=phone.substring(0, phone.length()-1);
		System.out.println("phone:"+phone);
		
		JSONArray experienceArray=jsonObject.getJSONArray("experience");
		System.out.println("work experience:");
		for(int i=0;i<experienceArray.size();i++){
			JSONObject experience=(JSONObject)experienceArray.opt(i);
			System.out.print("name:"+experience.getString("name")+"   ");
			System.out.print("duration:"+experience.getString("duration")+"   ");
			System.out.print("position:"+experience.getString("position")+"   ");
			System.out.println();
		}
		
		String married=jsonObject.getString("married");
		System.out.println("married:"+married);
		
	}
	
	public static void readJSON(String str){
		JSONTokener jsonTokener=new JSONTokener(str);
		
		//读取下一个字符,此处就是第1个
		jsonTokener.next();
		
		//读取第7个字符之前的字符,不包括第7个
		System.out.print(jsonTokener.next(7));
		
		//读取某个字符之前的字符,不包括那个字符
		System.out.println(jsonTokener.nextString(','));
		
		//回退一个字符
		jsonTokener.back();
		
		//读到指定的字符串处
		jsonTokener.skipPast("553\"]");
		//读到指定的字符处
		jsonTokener.skipTo('i');
	}
	
	
	public static void main(String[] args) {
		String str=StructureJson.createJsonByJSONStringer();
		parse(str);
		
		System.out.println();
		
		readJSON(str);
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值