JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。比XML更灵活易用,适合网络数据格式传输。
网上看到的JSON解析与构造工具主要有org.json和json-lib,评价是org.json更轻量简单,因此先尝试使用org.json
需要在网上下载json.org.jar jar包,使用时需要导入到工程的lib中。
JSONObject:可以看作是一个json对象,这是系统中有关JSON定义的基本单元,其包含一对儿(Key/Value)数值。用JSONObject生成的文本,不是按顺序排列的。
JSONStringer:json文本构建类 ,根据官方的解释,这个类可以帮助快速和便捷的创建JSON text。其最大的优点在于可以减少由于 格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntax rules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON text。。其最大的优点在于可以减少由于格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntax rules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON text。
JSONArray:它代表一组有序的数值。将其转换为String输出(toString)所表现的形式是用方括号包裹,数值以逗号”,”分隔(例如: [value1,value2,value3],大家可以亲自利用简短的代码更加直观的了解其格式)。这个类的内部同样具有查询行为, get()和opt()两种方法都可以通过index索引返回指定的数值,put()方法用来添加或者替换数值。同样这个类的value类型可以包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object。
JSONTokener:json解析类
JSONException:json中用到的异常
分别使用JSONObject和JSONStringer构造JSON文本的例子
1 package jsonDemo; 2 3 import org.json.JSONException; 4 import org.json.JSONObject; 5 import org.json.JSONStringer; 6 import org.json.JSONArray; 7 import org.json.JSONTokener; 8 import org.junit.Test; 9 import java.net.URLDecoder;10 import java.net.URLEncoder;11 12 13 public class JSONObjectTest { 14 15 //@Test 16 17 private static String prepareJSONObject(){ 18 JSONObject studentJSONObject = new JSONObject(); 19 try { 20 studentJSONObject.put("name", "Jason"); 21 studentJSONObject.put("id", 20130001); 22 studentJSONObject.put("phone", "13579246810"); 23 } catch (JSONException e) { 24 e.printStackTrace(); 25 } 26 27 return studentJSONObject.toString(); 28 } 29 30 private static String prepareJSONObject2(){ 31 JSONStringer jsonStringer = new JSONStringer(); 32 try { 33 jsonStringer.object(); 34 jsonStringer.key("1"); 35 jsonStringer.value("11:22:33:44:55:66"); 36 jsonStringer.key("2"); 37 jsonStringer.value("12:23:34:45:56:67"); 38 jsonStringer.key("3"); 39 jsonStringer.value("99:88:77:66:55:44"); 40 jsonStringer.endObject(); 41 } catch (JSONException e) { 42 e.printStackTrace(); 43 } 44 return jsonStringer.toString(); 45 } 46 private static String prepareJSONarray(){ 47 JSONArray jsonArray1 = new JSONArray(); 48 try {49 JSONObject Json = new JSONObject(); 50 Json.put("key", "value");51 jsonArray1.put(Json);52 } catch (JSONException e) { 53 e.printStackTrace(); 54 } 55 return jsonArray1.toString(); 56 } 57 58 //private static String JSONText = "{\"id\":20130001,\"phone\":\"13579246810\",\"name\":\"Jason\"}"; 59 private static String getJSONContent(String JSONText){ 60 JSONTokener jsonTokener = new JSONTokener(JSONText); 61 JSONObject macJSONObject; 62 String mac1 = null; 63 String mac2 = null; 64 String mac3 = null; 65 try { 66 macJSONObject = (JSONObject) jsonTokener.nextValue(); 67 mac1 = macJSONObject.getString("1"); 68 mac2 = macJSONObject.getString("2"); 69 mac3 = macJSONObject.getString("3"); 70 71 } catch (JSONException e) { 72 e.printStackTrace(); 73 } 74 return mac1 + " " + mac2 + " " + mac3; 75 } 76 77 78 79 public static void main(String[] args) { 80 //System.out.println(prepareJSONObject());81 String jstring=prepareJSONObject2();82 System.out.println(jstring); 83 String urlStr = URLEncoder.encode(jstring);84 System.out.println(urlStr); 85 String content= getJSONContent(jstring);86 System.out.println(URLEncoder.encode(content));87 //System.out.println(prepareJSONarray());88 } 89 90 91 }