JSON笔记

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 }  

 

posted @ 2016-05-05 15:37  桃乐丝  阅读(172)  评论(0)    收藏  举报