String,Number 和 Boolean 用 JSON 表示非常简单。 除了字符 ",/,/ 和一些控制符(/b,/f,/n,/r,/t)需要编码外,其他 Unicode 字符可以直接输出。 Boolean 类型表示为 true 或 false 。此外,JavaScript 中的 null 被表示为 null,注意,true、false 和 null 都没有双引号,否则将被视为一个 String 。 JSON 还可以表示一个数组对象,使用 [] 包含所有元素,每个元素用逗号分隔,元素可以是任意的 Value Object 对象在 JSON 中是用 {} 包含一系列无序的 Key-Value 键值对表示的,实际上此处的 Object 相当于 Java 中的 Map<String, Object>,而不是 Java 的 Class 。注意 Key 只能用 String 表示。 例如,一个 Address 对象包含如下 Key-Value: city:Beijing street:Chaoyang Road postcode:100025(整数) 用 JSON 表示如下: {"city":"Beijing","street":" Chaoyang Road ","postcode":100025} 其中 Value 也可以是另一个 Object 或者数组,因此,复杂的 Object 可以嵌套表示,例如,一个 Person 对象包含 name 和 address 对象,可以表示如下: {"name":"Michael","address": {"city":"Beijing","street":" Chaoyang Road ","postcode":100025} } 我们通过一个简单的 JavaScript 方法就能看到客户端如何将 JSON 数据表示给用户: function handleJson() { var j={"name":"Michael","address": {"city":"Beijing","street":" Chaoyang Road ","postcode":100025} }; document.write(j.name); document.write(j.address.city); } 假定服务器返回的 JSON 数据是上文的: {"name":"Michael","address": {"city":"Beijing","street":" Chaoyang Road ","postcode":100025} } 只需将其赋值给一个 JavaScript 变量,就可以立刻使用该变量并更新页面中的信息了 服务器端输出 JSON 格式数据 以 Java 为例,我们将演示将一个 Java 对象编码为 JSON 格式的文本。 将 String 对象编码为 JSON 格式时,只需处理好特殊字符即可。另外,必须用 (") 而非 (') 表示字符串: static String string2Json(String s) { StringBuilder sb = new StringBuilder(s.length()+20); sb.append('/"'); for (int i=0; i<s.length(); i++) { char c = s.charAt(i); switch (c) { case '/"': sb.append("///""); break; case '//': sb.append("////"); break; case '/': sb.append("///"); break; case '/b': sb.append("//b"); break; case '/f': sb.append("//f"); break; case '/n': sb.append("//n"); break; case '/r': sb.append("//r"); break; case '/t': sb.append("//t"); break; default: sb.append(c); } } sb.append('/"'); return sb.toString(); } 将 Number 表示为 JSON 就容易得多,利用 Java 的多态,我们可以处理 Integer,Long,Float 等多种 Number 格式: static String number2Json(Number number) { return number.toString(); } Boolean 类型也可以直接通过 toString() 方法得到 JSON 的表示: static String boolean2Json(Boolean bool) { return bool.toString(); } 要将数组编码为 JSON 格式,可以通过循环将每一个元素编码出来: static String array2Json(Object[] array) { if (array.length==0) return "[]"; StringBuilder sb = new StringBuilder(array.length << 4); sb.append('['); for (Object o : array) { sb.append(toJson(o)); sb.append(','); } // 将最后添加的 ',' 变为 ']': sb.setCharAt(sb.length()-1, ']'); return sb.toString(); } 最后,我们需要将 Map<String, Object> 编码为 JSON 格式,因为 JavaScript 的 Object 实际上对应的是 Java 的 Map<String, Object> 。该方法如下: static String map2Json(Map<String, Object> map) { if (map.isEmpty()) return "{}"; StringBuilder sb = new StringBuilder(map.size() << 4); sb.append('{'); Set<String> keys = map.keySet(); for (String key : keys) { Object value = map.get(key); sb.append('/"'); sb.append(key); sb.append('/"'); sb.append(':'); sb.append(toJson(value)); sb.append(','); } // 将最后的 ',' 变为 '}': sb.setCharAt(sb.length()-1, '}'); return sb.toString(); } 为了统一处理任意的 Java 对象,我们编写一个入口方法 toJson(Object),能够将任意的 Java 对象编码为 JSON 格式: public static String toJson(Object o) { if (o==null) return "null"; if (o instanceof String) return string2Json((String)o); if (o instanceof Boolean) return boolean2Json((Boolean)o); if (o instanceof Number) return number2Json((Number)o); if (o instanceof Map) return map2Json((Map<String, Object>)o); if (o instanceof Object[]) return array2Json((Object[])o); throw new RuntimeException("Unsupported type: " + o.getClass().getName()); } JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。 JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。 JSON的规则很简单:对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。具体细节参考http://www.json.org/json-zh.html 举个简单的例子: js 代码 function showJSON() { var user = { "username":"andy", "age":20, "info": { "tel": "123456", "cellphone": "98765"}, "address": [ {"city":"beijing","postcode":"222333"}, {"city":"newyork","postcode":"555666"} ] } alert(user.username); alert(user.age); alert(user.info.cellphone); alert(user.address[0].city); alert(user.address[0].postcode); } 这表示一个user对象,拥有username, age, info, address 等属性。 同样也可以用JSON来简单的修改数据,修改上面的例子 js 代码 function showJSON() { var user = { "username":"andy", "age":20, "info": { "tel": "123456", "cellphone": "98765"}, "address": [ {"city":"beijing","postcode":"222333"}, {"city":"newyork","postcode":"555666"} ] } alert(user.username); alert(user.age); alert(user.info.cellphone); alert(user.address[0].city); alert(user.address[0].postcode); user.username = "Tom"; alert(user.username); } JSON提供了json.js包,下载http://www.json.org/json.js 后,将其引入然后就可以简单的使用object.toJSONString()转换成JSON数据。 js 代码 function showCar() { var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow"); alert(carr.toJSONString()); } function Car(make, model, year, color) { this.make = make; this.model = model; this.year = year; this.color = color; } 可以使用eval来转换JSON字符到Object js 代码 function myEval() { var str = '{ "name": "Violet", "occupation": "character" }'; var obj = eval('(' + str + ')'); alert(obj.toJSONString()); } 或者使用parseJSON()方法 js 代码 function myEval() { var str = '{ "name": "Violet", "occupation": "character" }'; var obj = str.parseJSON(); alert(obj.toJSONString()); } 下面使用prototype写一个JSON的ajax例子。 先写一个servlet (我的是servlet.ajax.JSONTest1.java)就写一句话 java 代码 response.getWriter().print("{ /"name/": /"Violet/", /"occupation/": /"character/" }"); 再在页面中写一个ajax的请求 js 代码 function sendRequest() { var url = "/MyWebApp/JSONTest1"; var mailAjax = new Ajax.Request( url, { method: 'get', onComplete: jsonResponse } ); } function jsonResponse(originalRequest) { alert(originalRequest.responseText); var myobj = originalRequest.responseText.parseJSON(); alert(myobj.name); } prototype-1.5.1.js中提供了JSON的方法,String.evalJSON(), 可以不使用json.js, 修改上面的方法 js 代码 function jsonResponse(originalRequest) { alert(originalRequest.responseText); var myobj = originalRequest.responseText.evalJSON(true); alert(myobj.name); } JSON还提供了java的jar包 http://www.json.org/java/index.html API也很简单,下面举个例子 在javascript中填加请求参数 js 代码 function sendRequest() { var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow"); var pars = "car=" + carr.toJSONString(); var url = "/MyWebApp/JSONTest1"; var mailAjax = new Ajax.Request( url, { method: 'get', parameters: pars, onComplete: jsonResponse } ); } 使用JSON请求字符串就可以简单的生成JSONObject并进行解析,修改servlet添加JSON的处理(要使用json.jar) java 代码 privatevoid doService(HttpServletRequest request, HttpServletResponse response) throws IOException { String s3 = request.getParameter("car"); try { JSONObject jsonObj = new JSONObject(s3); System.out.println(jsonObj.getString("model")); System.out.println(jsonObj.getInt("year")); } catch (JSONException e) { e.printStackTrace(); } response.getWriter().print("{ /"name/": /"Violet/", /"occupation/": /"character/" }"); } 同样可以使用JSONObject生成JSON字符串,修改servlet java 代码 privatevoid doService(HttpServletRequest request, HttpServletResponse response) throws IOException { String s3 = request.getParameter("car"); try { JSONObject jsonObj = new JSONObject(s3); System.out.println(jsonObj.getString("model")); System.out.println(jsonObj.getInt("year")); } catch (JSONException e) { e.printStackTrace(); } JSONObject resultJSON = new JSONObject(); try { resultJSON.append("name", "Violet") .append("occupation", "developer") .append("age", new Integer(22)); System.out.println(resultJSON.toString()); } catch (JSONException e) { e.printStackTrace(); } response.getWriter().print(resultJSON.toString()); } js 代码 function jsonResponse(originalRequest) { alert(originalRequest.responseText); var myobj = originalRequest.responseText.evalJSON(true); alert(myobj.name); alert(myobj.age); } 参考 http://www.json.org/js.html http://www.blogjava.net/Jkallen/archive/2006/03/28/37905.html http://www.json.org/ http://www.prototypejs.org/learn/json http://www.json.org/java/index.html http://www.ibm.com/developerworks/cn/web/wa-ajaxintro10/index.html
相关推荐
`com.force.json`是一个针对.NET平台的高性能JSON库,由Salesforce公司开发,它提供了快速且内存效率高的JSON解析和生成功能。这个库适用于那些需要高效处理大量JSON数据的应用场景。 首先,我们需要了解JSON的基本...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,设计简单且易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript的一个子集,但并非JavaScript的方言,因此在各种编程语言中都能得到广泛...
JSON是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,同时非常易于人阅读和编写,也易于机器解析和生成。JSON格式基于JavaScript的一个子集,包括对象、数组、字符串、数字、布尔值和null等基本类型。...
提供的32位和64位版本的JSON格式化插件,使得用户可以在NodePad++中直接对JSON文件进行美化和解析。安装插件后,用户可以使用快捷键或菜单选项快速对JSON文档进行格式调整,使其具有良好的缩进和换行,便于理解和...
2. JSON解析:JSON解析器是用于将JSON格式的文本解析成可以操作的对象结构。例如,解析一个包含用户信息的JSON字符串,将其转换为User类的实例。这个jar包可能包含了这样的解析器,使得开发者可以方便地获取和操作...
JSON格式通常用于替代XML,因为它的语法更简单,解析速度更快。 在“谷歌json格式插件.zip”这个压缩包中,我们可以看到几个与JSON相关的文件,这些文件可能是为了帮助用户更好地在谷歌浏览器(Chrome)中查看和...
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,被广泛应用于Web服务与客户端...了解并掌握这类工具的使用,对于处理和理解复杂的JSON数据至关重要,特别是在进行Web开发、数据分析或者API交互时。
一、Fastjson:高效且易用的JSON解析器与生成器 Fastjson是阿里巴巴开发的一个高性能的Java JSON库,它的设计目标是快速、小巧、易用,无需额外的依赖,这使得它在许多项目中受到青睐。Fastjson的核心特性包括: 1...
JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在本资源中,我们有一个名为`json_lib.lib`的预编译库,它适用于两种不同的处理器架构:64位和32位。这意味着无论你的项目是为64位...
标题“VC++读取json格式数据.rar.rar”表明这是一个关于使用C++在Visual C++(VC++)环境下解析和操作JSON数据的资源包。资源包中包含了一个名为“626.pptx”的演示文稿和一个名为“VC++读取json格式数据.rar”的...
JSON解析.dll是Unity中用于处理JSON数据的库,它允许开发者将JSON字符串转化为C#对象或者将C#对象转化为JSON字符串。 在Unity与WebGL的结合使用中,由于WebGL的目标是浏览器环境,因此存在一些特定的限制。例如,...
JSON,全称JavaScript Object Notation,是一种轻量级的数据交换格式,它采用完全独立于语言的文本格式,同时也易于人阅读和编写,同时也易于机器解析和生成。在Web开发中,JSON是JavaScript原生格式,这使得JSON...
1. **JSON与Java对象的互转**:这个库提供了便捷的方法将Java对象(如Java Bean、Map、List等)转换为JSON格式的字符串,同时也支持将JSON字符串解析成相应的Java对象。这在处理前后端交互或者内部数据存储时非常...
JavaScript(js)是一种广泛用于网页和网络应用的编程语言,而JSON(JavaScript Object Notation)则是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在这个压缩包中,`js`文件很可能包含...
这个单元可能包含了自定义的JSON解析器和格式化器,用以将原始的JSON字符串转换为具有缩进和换行的易读格式。为了防止内存泄露,开发人员可能使用了智能指针或者其他内存管理技术。 `uMainForm.pas`则是`uMainForm....
适用于json解析,美观直观的观看数据
ArduinoJson 是一个专门为 Arduino 平台设计的 JSON 解析库,它的版本5.x 提供了在微控制器上处理 JSON 数据的强大功能。这个库允许 Arduino 开发者轻松地将 JSON 格式的数据转换为 Arduino 可以理解的结构,并且...
json3.js 【JS / JavaScript 中解析JSON的js包,JSON官方的JSON解析包】。JavaScript中解析JSON的js包,页面中引入json3.js,即可使用。 使用方法:JSON.parse(str), JSON.stringify(obj) 更多详情请参考博文: ...
在Android开发中,JSON解析是至关重要的,因为很多API接口返回的数据都是JSON格式。 在Android中,我们可以使用多种库来解析JSON数据,如`org.json`库(内置于Android SDK)、Gson库、Jackson库以及FastJson库等。...