网络数据的传输经常会使用到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);
}
}
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);
}
}