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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值