JSONObject

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。

    本文主要是对JS操作JSON的要领做下总结。

    在JSON中,有两种结构:对象和数组。

    1. 一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间运用 “,”(逗号)分隔。 名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。例如:

    var o={"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"};

    2. 数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间运用 “,”(逗号)分隔。

    例如:

    var jsonranklist=[{"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"},{"xlid":"zd","xldigitid":123456,"topscore":1500,"topplaytime":"2009-11-20"}];

    为了方便地处理JSON数据,JSON提供了json.js包,下载地址:http://www.json.org/json.js

    在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。例如:

    JSON字符串:

    var str1 = '{ "name": "cxh", "sex": "man" }';

    JSON对象:

    var str2 = { "name": "cxh", "sex": "man" };

    一、JSON字符串转换为JSON对象

    要运用上面的str1,必须运用下面的要领先转化为JSON对象:

    //由JSON字符串转换为JSON对象

    var obj = eval('(' + str + ')');

或者



    var obj = str.parseJSON(); //由JSON字符串转换为JSON对象

    或者

    var obj = JSON.parse(str); //由JSON字符串转换为JSON对象

    然后,就可以这样读取:

    Alert(obj.name);

    Alert(obj.sex);

    特别留心:如果obj本来就是一个JSON对象,那么运用 eval()函数转换后(哪怕是多次转换)还是JSON对象,但是运用 parseJSON()函数处理后会有疑问(抛出语法异常)。

    二、可以运用 toJSONString()或者全局要领 JSON.stringify()将JSON对象转化为JSON字符串。

    例如:

    var last=obj.toJSONString(); //将JSON对象转化为JSON字符

    或者

    var last=JSON.stringify(obj); //将JSON对象转化为JSON字符

    alert(last);

    留心:

    上面的多个要领中,除了eval()函数是js自带的之外,其他的多个要领都来自json.js包。新版本的 JSON 修改了 API,将 JSON.stringify() 和 JSON.parse() 两个要领都注入到了 Javascript 的内建对象里面,前者变成了 Object.toJSONString(),而后者变成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()要领,则说明您的json包版本太低


1.如果我们需要实现一个配置管理的功能,那么为每个配置项目增加一个字段既复杂也不利于扩展,所以我们通常使用一个字符串来保存配置项目信息,这里介绍如何使用json的字符串解析来达到刚才说的目的。引入Json需要的类库:   
2.import org.json.JSONException;    
3.import org.json.JSONObject;    
4. 
5.生成一个json对象(可以添加不同类型的数据):   
6.JSONObject jsonObject = new JSONObject();   jsonObject.put("a", 1);     
7. jsonObject.put("b", 1.1);    
8.  jsonObject.put("c", 1L);    
9.  jsonObject.put("d", "test");    
10.  jsonObject.put("e", true);     
11. System.out.println(jsonObject);   
12.    
13.//{"d":"test","e":true,"b":1.1,"c":1,"a":1}     
14. 
15.JSONObject jsonObject = new JSONObject();   
16.jsonObject.put("a", 1);   
17.jsonObject.put("b", 1.1);   
18.jsonObject.put("c", 1L);   
19.jsonObject.put("d", "test");   
20.jsonObject.put("e", true);   
21.System.out.println(jsonObject);  
22.//{"d":"test","e":true,"b":1.1,"c":1,"a":1}   
23. 
24.解析一个json对象(可以解析不同类型的数据):   
25.jsonObject = getJSONObject("{d:test,e:true,b:1.1,c:1,a:1}");     
26. System.out.println(jsonObject);     
27. 
28.//{"d":"test","e":true,"b":1.1,"c":1,"a":1}     
29. System.out.println(jsonObject.getInt("a"));     
30. System.out.println(jsonObject.getDouble("b"));     
31. System.out.println(jsonObject.getLong("c"));     
32. System.out.println(jsonObject.getString("d"));     
33. System.out.println(jsonObject.getBoolean("e"));    
34. jsonObject = getJSONObject("{d:test,e:true,b:1.1,c:1,a:1}");   
35. System.out.println(jsonObject);  
36. //{"d":"test","e":true,"b":1.1,"c":1,"a":1}   
37.System.out.println(jsonObject.getInt("a"));   
38.System.out.println(jsonObject.getDouble("b"));   
39.System.out.println(jsonObject.getLong("c"));   
40.System.out.println(jsonObject.getString("d"));   
41.System.out.println(jsonObject.getBoolean("e"));   
42.getJSONObject(String str)  
43. 
44.public static JSONObject getJSONObject(String str) {      
45.  if (str == null || str.trim().length() == 0)       
46.   return null;       
47. JSONObject jsonObject = null;        
48.try {       jsonObject = new JSONObject(str);     }    
49.catch (JSONException e) {       
50.   e.printStackTrace(System.err);     }    
51.   return jsonObject;  




基于json-lib.jar包Json实例程序
1.从头或者从零开始,创建一个JSONObject(Creating a JSONObject from scratch)



Java代码 
1.<SPAN style="FONT-SIZE: small">实例1:   
2.   JSONObject jsonObject = new JSONObject();  
3.   jsonObject.element("name", "周星星");  
4.   jsonObject.element("sex", "male");  
5.   jsonObject.element("age", 18);  
6.   jsonObject.element("job", "student");  
7. 
8.   System.out.println(jsonObject.get("name"));// 周星星  
9.   System.out.println(jsonObject.get("job"));// student  
10.   System.out.println(jsonObject.getString("sex"));// male  
11.   System.out.println(jsonObject.getInt("age"));// 18  
12.实例2:  
13.   JSONObject jsonObject = new JSONObject().element("string", "JSON").element("integer", "1").element("double", "2.0").element("boolean", "true");  
14.   assertEquals("JSON", jsonObject.getString("string"));  
15.   assertEquals(1, jsonObject.getInt("integer"));  
16.   assertEquals(2.0d, jsonObject.getDouble("double"), 0d);  
17.   assertTrue(jsonObject.getBoolean("boolean"));  
18.   注:这是对实例1的一个简化版  
19.</SPAN> 
实例1:
   JSONObject jsonObject = new JSONObject();
   jsonObject.element("name", "周星星");
   jsonObject.element("sex", "male");
   jsonObject.element("age", 18);
   jsonObject.element("job", "student");

   System.out.println(jsonObject.get("name"));// 周星星
   System.out.println(jsonObject.get("job"));// student
   System.out.println(jsonObject.getString("sex"));// male
   System.out.println(jsonObject.getInt("age"));// 18
实例2:
   JSONObject jsonObject = new JSONObject().element("string", "JSON").element("integer", "1").element("double", "2.0").element("boolean", "true");
   assertEquals("JSON", jsonObject.getString("string"));
   assertEquals(1, jsonObject.getInt("integer"));
   assertEquals(2.0d, jsonObject.getDouble("double"), 0d);
   assertTrue(jsonObject.getBoolean("boolean"));
   注:这是对实例1的一个简化版

 
2.使用一个JSON格式化字符串来创建一个JSONObject(Creating a JSONObject from a JSON formatted string) 


Java代码 
1.<SPAN style="FONT-SIZE: small">实例1:  
2.   String json = "{name:\"周星星\",sex:\"male\",age:18,job:\"student\"}";  
3.   JSONObject jsonObject = JSONObject.fromObject(json);  
4.   //或者使用 JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(json);  
5.   System.out.println(jsonObject.get("name"));// 周星星  
6.   System.out.println(jsonObject.get("job"));// student  
7.   System.out.println(jsonObject.getString("sex"));// male  
8.   System.out.println(jsonObject.getInt("age"));// 18  
9.实例2:  
10.   String str = "{'string':'JSON', 'integer': 1, 'double': 2.0, 'boolean': true}";  
11.   JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(str);  
12.   assertEquals("JSON", jsonObject.getString("string"));  
13.   assertEquals(1, jsonObject.getInt("integer"));  
14.   assertEquals(2.0d, jsonObject.getDouble("double"), 0d);  
15.   assertTrue(jsonObject.getBoolean("boolean"));</SPAN> 
实例1:
   String json = "{name:\"周星星\",sex:\"male\",age:18,job:\"student\"}";
   JSONObject jsonObject = JSONObject.fromObject(json);
   //或者使用 JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(json);
   System.out.println(jsonObject.get("name"));// 周星星
   System.out.println(jsonObject.get("job"));// student
   System.out.println(jsonObject.getString("sex"));// male
   System.out.println(jsonObject.getInt("age"));// 18
实例2:
   String str = "{'string':'JSON', 'integer': 1, 'double': 2.0, 'boolean': true}";
   JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(str);
   assertEquals("JSON", jsonObject.getString("string"));
   assertEquals(1, jsonObject.getInt("integer"));
   assertEquals(2.0d, jsonObject.getDouble("double"), 0d);
   assertTrue(jsonObject.getBoolean("boolean"));
 
3.使用一个Map来创建一个JSONObject(Creating a JSONObject from a Map)
实例1:


Java代码 
1.<SPAN style="FONT-SIZE: small">   Map map = new HashMap();     
2.   map.put( "string", "JSON" );     
3.   map.put( "integer", "1" );     
4.   map.put( "double", "2.0" );     
5.   map.put( "boolean", "true" );     
6.   JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( map );     
7.   assertEquals( "JSON", jsonObject.getString("string") );           
8.   assertEquals( 1, jsonObject.getInt("integer") );           
9.   assertEquals( 2.0d, jsonObject.getDouble("double"), 0d );           
10.   assertTrue( jsonObject.getBoolean("boolean") ); </SPAN> 
   Map map = new HashMap();  
   map.put( "string", "JSON" );  
   map.put( "integer", "1" );  
   map.put( "double", "2.0" );  
   map.put( "boolean", "true" );  
   JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON( map );  
   assertEquals( "JSON", jsonObject.getString("string") );        
   assertEquals( 1, jsonObject.getInt("integer") );        
   assertEquals( 2.0d, jsonObject.getDouble("double"), 0d );        
   assertTrue( jsonObject.getBoolean("boolean") ); 




4.使用一个JavaBean来创建一个JSONObject(Creating a JSONObject from a JavaBean)
实例1:


Java代码 
1.<SPAN style="FONT-SIZE: small">public class Mybean {  
2.   private String string;  
3.   private int integer;  
4.   private double dooble;  
5.   private boolean bool;  
6. 
7.   // getters & setters  
8.}  
9. 
10.Mybean bean = new Mybean();  
11.bean.setString("JSON");  
12.bean.setInteger(1);  
13.bean.setDooble(2.0d);  
14.bean.setBool(true);  
15.JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(bean);  
16.assertEquals("JSON", jsonObject.getString("string"));  
17.assertEquals(1, jsonObject.getInt("integer"));  
18.assertEquals(2.0d, jsonObject.getDouble("dooble"), 0d);  
19.assertTrue(jsonObject.getBoolean("bool"));  
20.</SPAN>

你可能感兴趣的:(JavaScript,C++,json,bean,C#)