js操作json
JS操作JSON总结
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":12 3456,"topscore":1500,"topplaytime":"2009-11-20"}];
为了方便地处理JSON数据,JSON提供了json.js包,下载地址:https://www.360docs.net/doc/481976498.html,/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(https://www.360docs.net/doc/481976498.html,);
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.stringif
y() 和JSON.parse() 两个要领都注入到了Javascript 的内建对象里面,前者变成了Object.toJSONString(),而后者变成了String.parse JSON()。如果提示找不到toJSONString()和parseJSON()要领,则说明您的json包版本太低。
尽管有许多宣传关于 XML 如何拥有跨平台,跨语言的优势,然而,除非应用于Web Services,否则,在普通的 Web 应用中,开发者经常为 XML 的解析伤透了脑筋,无论是服务器端生成或处理 XML,还是客户端用 JavaScript 解析 XML,都常常导致复杂的代码,极低的开发效率。实际上,对于大多数 Web 应用来说,他们根本不需要复杂的 XML 来传输数据,XML 的扩展性很少具有优势,许多AJAX 应用甚至直接返回 HTML 片段来构建动态 Web 页面。和返回 XML 并解析它相比,返回 HTML 片段大大降低了系统的复杂性,但同时缺少了一定的灵活性。现在, JSON 为 Web 应用开发者提供了另一种数据交换格式。让我们来看看JSON 到底是什么,同 XML 或 HTML 片段相比,JSON 提供了更好的简单性和灵活性。
Ajax 资源中心
请访问Ajax 资源中心,这是有关 Ajax 编程模型信息的一站式中心,包括很多文档、教程、论坛、blog、wiki 和新闻。任何 Ajax 的新信息都能在这里找到。JSON 数据格式解析
和 XML 一样,JSON 也是基于纯文本的数据格式。由于 JSON 天生是为JavaScript 准备的,因此,JSON 的数据格式非常简单,您可以用 JSON 传输一个简单的 String,Number,Boolean,也可以传输一个数组,或者一个复杂的Object 对象。
String,Number 和 Boolean 用 JSON 表示非常简单。例如,用 JSON 表示一个简单的 String “ abc ”,其格式为:
"abc"
除了字符 ",\,/ 和一些控制符(\b,\f,\n,\r,\t)需要编码外,其他 Unicode 字符可以直接输出。下图是一个 String 的完整表示结构:
图1. String 的完整表示结构
一个 Number 可以根据整型或浮点数表示如下:
图2. Number 的表示结构
这与绝大多数编程语言的表示方法一致,例如:
12345(整数)
-3.9e10(浮点数)
Boolean 类型表示为 true 或 false 。此外,JavaScript 中的 null 被表示为null,注意,true、false 和 null 都没有双引号,否则将被视为一个 String 。JSON 还可以表示一个数组对象,使用 [] 包含所有元素,每个元素用逗号分隔,元素可以是任意的 Value,例如,以下数组包含了一个 String,Number,Boolean 和一个 null:
["abc",12345,false,null]
Object 对象在 JSON 中是用 {} 包含一系列无序的 Key-Value 键值对表示的,实际上此处的 Object 相当于 Java 中的 Map
例如,一个 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 数据
上面介绍了如何用 JSON 表示数据,接下来,我们还要解决如何在服务器端生成JSON 格式的数据以便发送到客户端,以及客户端如何使用 JavaScript 处理JSON 格式的数据。
我们先讨论如何在 Web 页面中用 JavaScript 处理 JSON 数据。我们通过一个简单的 JavaScript 方法就能看到客户端如何将 JSON 数据表示给用户:function handleJson() {
var j={"name":"Michael","address":
{"city":"Beijing","street":" Chaoyang Road ","postcode":100025} };
document.write(https://www.360docs.net/doc/481976498.html,);
document.write(j.address.city);
}
假定服务器返回的 JSON 数据是上文的:{"name":"Michael","address":
{"city":"Beijing","street":" Chaoyang Road ","postcode":100025} }
只需将其赋值给一个 JavaScript 变量,就可以立刻使用该变量并更新页面中的信息了,相比 XML 需要从 DOM 中读取各种节点而言,JSON 的使用非常容易。我们需要做的仅仅是发送一个 Ajax 请求,然后将服务器返回的 JSON 数据赋值给一个变量即可。有许多 Ajax 框架早已包含了处理 JSON 数据的能力,例如Prototype(一个流行的 JavaScript 库:https://www.360docs.net/doc/481976498.html,)提供了evalJSON() 方法,能直接将服务器返回的 JSON 文本变成一个 JavaScript 变量:
new Ajax.Request("http://url", {
method: "get",
onSuccess: function(transport) {
var json = transport.responseText.evalJSON();
// TODO: document.write(json.xxx);
}
});
服务器端输出 JSON 格式数据
下面我们讨论如何在服务器端输出 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 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 static String map2Json(Map if (map.isEmpty()) return "{}"; StringBuilder sb = new StringBuilder(map.size() << 4); sb.append('{'); Set 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 if (o instanceof Object[]) return array2Json((Object[])o); throw new RuntimeException("Unsupported type: " + o.getClass().getName()); } 我们并未对 Java 对象作严格的检查。不被支持的对象(例如 List)将直接抛出 RuntimeException 。此外,为了保证输出的 JSON 是有效的,Map @Test(expected=StackOverflowError.class) public void testRecurrsiveMap2Json() { Map map.put("key", map); JsonUtil.map2Json(map); } 好在服务器处理的 JSON 数据最终都应该转化为简单的 JavaScript 对象,因此,递归引用的可能性很小。 最后,通过 Servlet 或 MVC 框架输出 JSON 时,需要设置正确的 MIME 类型(application/json)和字符编码。假定服务器使用 UTF-8 编码,则可以使用以下代码输出编码后的 JSON 文本: response.setContentType("application/json;charset=UTF-8"); response.setCharacterEncoding("UTF-8"); PrintWriter pw = response.getWriter(); pw.write(JsonUtil.toJson(obj)); pw.flush(); 小结 JSON 已经是 JavaScript 标准的一部分。目前,主流的浏览器对 JSON 支持都非常完善。应用 JSON,我们可以从 XML 的解析中摆脱出来,对那些应用 Ajax 的Web 2.0 网站来说,JSON 确实是目前最灵活的轻量级方案。 程 文章分类:Web前端 这是个人在最近使用json时做的总结,拿出来给没接触过的小弟们晒晒,适用与没接触过json的人员,其中json2。js请到json官网下载。 //直接声明json数据结构 var myJSONObject = {"bindings": [ {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"}, {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"}, {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"} ] }; //声明字符串,可对比一下json文本与我们正常文本的区别 var normalstring='[{persons:[{name:"jordan",sex:"m",age:"40"}, {name:"bryant",sex:"m",age:"28"}, {name:"McGrady",sex:"m",age:"27"} ]}]'; var jsontext='[{"persons":[{"name":"jordan","sex":"m","age":"40"}, {"name":"bryant","sex":"m","age":"28"}, {"name":"McGrady","sex":"m","age":"27"} ]}]'; //调用eval函数转换为json对象, var myE = eval(normalstring); document.writeln(myE+' //将json对象转换为字符串 var text = JSON.stringify(myE); //对比转换后的json文本与声明的文本区别 document.writeln('转换后的json文本:'+text+' '+jsontext+' //当安全比较重要的时候使用JSON解析就好一些。JSON解析只会识别JSON文本并且它更安全,下面调用json的parse函数对文本数据转换生成json数据结构 var myData = JSON.parse(jsontext); document.writeln(myData+' //下面是对json对象的增删查改操作 //声明json对象 var jsonObj2={persons:[{name:"jordan",sex:"m",age:"40"}, {name:"bryant",sex:"m",age:"28"}, {name:"McGrady",sex:"m",age:"27"} ]}; var persons=jsonObj2.persons; var str=""; var person={name:"yaoMing",sex:"m",age:"26"}; //以下为json对象的操作,去掉注释可以查看操作结果 //jsonObj2.persons.push(person);//数组最后加一条记录 //jsonObj2.persons.pop();//删除最后一项 //jsonObj2.persons.shift();//删除第一项 jsonObj2.persons.unshift(person);//数组最前面加一条记录只要适合Javascript的方法都是可以用在JSON对象的数组中的!所以还有另外的方法splice( )进行crud操作!//删除 //jsonObj2.persons.splice(0,2);//开始位置,删除个数 //替换不删除 var self={name:"tom",sex:"m",age:"24"}; var brother={name:"Mike",sex:"m",age:"29"}; jsonObj2.persons.splice(1,0,self,brother,self);//开始位置,删除个数,插入对象 //替换并删除 //jsonObj2.persons.splice(0,1,self,brother);//开始位置,删除个数,插入对象 for(var i=0;i document.writeln(str); //转换为json文本 var myjsonobj = JSON.stringify(jsonObj2); document.writeln(myjsonobj); JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。 JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。 JSON的规则很简单:对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。具体细节参考https://www.360docs.net/doc/481976498.html,/json-zh.html 举个简单的例子: js 代码 1.function showJSON() { 2. var user = 3. { 4. "username":"andy", 5. "age":20, 6. "info": { "tel": "123456", "cellphone": "98765"}, 7. "address": 8. [ 9. {"city":"beijing","postcode":"222333"}, 10. {"city":"newyork","postcode":"555666"} 11. ] 12. } 13. 14. alert(https://www.360docs.net/doc/481976498.html,ername); 15. alert(user.age); 16. alert(https://www.360docs.net/doc/481976498.html,.cellphone); 17. alert(user.address[0].city); 18. alert(user.address[0].postcode); 19.} 这表示一个user对象,拥有username, age, info, address 等属性。 同样也可以用JSON来简单的修改数据,修改上面的例子 js 代码 1.function showJSON() { 2. var user = 3. { 4. "username":"andy", 5. "age":20, 6. "info": { "tel": "123456", "cellphone": "98765"}, 7. "address": 8. [ 9. {"city":"beijing","postcode":"222333"}, 10. {"city":"newyork","postcode":"555666"} 11. ] 12. } 13. 14. alert(https://www.360docs.net/doc/481976498.html,ername); 15. alert(user.age); 16. alert(https://www.360docs.net/doc/481976498.html,.cellphone); 17. alert(user.address[0].city); 18. alert(user.address[0].postcode); 19. 20. https://www.360docs.net/doc/481976498.html,ername = "Tom"; 21. alert(https://www.360docs.net/doc/481976498.html,ername); 22.} JSON提供了json.js包,下载https://www.360docs.net/doc/481976498.html,/json.js后,将其引入然后就可以简单的使用object.toJSONString()转换成JSON数据。 js 代码 1.function showCar() { 2. var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow"); 3. alert(carr.toJSONString()); 4.} 5. 6.function Car(make, model, year, color) { 7. this.make = make; 8. this.model = model; 9. this.year = year; 10. this.color = color; 11.} 可以使用eval来转换JSON字符到Object js 代码 1.function myEval() { 2. var str = '{ "name": "Violet", "occupation": "character" }'; 3. var obj = eval('(' + str + ')'); 4. alert(obj.toJSONString()); 5.} 或者使用parseJSON()方法 js 代码 1.function myEval() { 2. var str = '{ "name": "Violet", "occupation": "character" }'; 3. var obj = str.parseJSON(); 4. alert(obj.toJSONString()); 5.} 下面使用prototype写一个JSON的ajax例子。 先写一个servlet (我的是servlet.ajax.JSONTest1.java)就写一句话 java 代码 1.response.getWriter().print("{ \"name\": \"Violet\", \"occupation\": \"character\" }"); 再在页面中写一个ajax的请求 js 代码 1.function sendRequest() { 2. var url = "/MyWebApp/JSONTest1"; 3. var mailAjax = new Ajax.Request( 4. url, 5. { 6. method: 'get', 7. onComplete: jsonResponse 8. } 9. ); 10.} 11. 12.function jsonResponse(originalRequest) { 13. alert(originalRequest.responseText); 14. var myobj = originalRequest.responseText.parseJSON(); 15. alert(https://www.360docs.net/doc/481976498.html,); 16.} prototype- js 代码 1.function jsonResponse(originalRequest) { 2. alert(originalRequest.responseText); 3. var myobj = originalRequest.responseText.evalJSON(true); 4. alert(https://www.360docs.net/doc/481976498.html,); 5.} JSON还提供了java的jar包 https://www.360docs.net/doc/481976498.html,/java/index.html API也很简单,下面举个例子 在javascript中填加请求参数 js 代码 1.function sendRequest() { 2. var carr = new Car("Dodge", "Coronet R/T", 1968, "yellow"); 3. var pars = "car=" + carr.toJSONString(); 4. 5. var url = "/MyWebApp/JSONTest1"; 6. var mailAjax = new Ajax.Request( 7. url, 8. { 9. method: 'get', 10. parameters: pars, 11. onComplete: jsonResponse 12. } 13. ); 14.} 使用JSON请求字符串就可以简单的生成JSONObject并进行解析,修改servlet 添加JSON的处理(要使用json.jar) java 代码 1.private void doService(HttpServletRequest request, HttpServletResponse response) thro ws IOException { 2. String s3 = request.getParameter("car"); 3. try { 4. JSONObject jsonObj = new JSONObject(s3); 5. System.out.println(jsonObj.getString("model")); 6. System.out.println(jsonObj.getInt("year")); 7. } catch (JSONException e) { 8. e.printStackTrace(); 9. } 10. response.getWriter().print("{ \"name\": \"Violet\", \"occupation\": \"character\" }"); 11. } 同样可以使用JSONObject生成JSON字符串,修改servlet java 代码 1.private void doService(HttpServletRequest request, HttpServletResponse response) thro ws IOException { 2. String s3 = request.getParameter("car"); 3. try { 4. JSONObject jsonObj = new JSONObject(s3); 5. System.out.println(jsonObj.getString("model")); 6. System.out.println(jsonObj.getInt("year")); 7. } catch (JSONException e) { 8. e.printStackTrace(); 9. } 10. 11. JSONObject resultJSON = new JSONObject(); 12. try { 13. resultJSON.append("name", "Violet") 14. .append("occupation", "developer") 15. .append("age", new Integer(22)); 16. System.out.println(resultJSON.toString()); 17. } catch (JSONException e) { 18. e.printStackTrace(); 19. } 20. response.getWriter().print(resultJSON.toString()); 21. } js 代码 1.function jsonResponse(originalRequest) { 2. alert(originalRequest.responseText); 3. var myobj = originalRequest.responseText.evalJSON(true); 4. alert(https://www.360docs.net/doc/481976498.html,); 5. alert(myobj.age); 6.} jQuery 1. 什么是jQuery?? jQuery是一个优秀的JavaScript框架,一个轻量级的JavaScript类库。 jQuery的核心理念是Write less,Do more。 使用jQuery可以兼容各种浏览器,方便的处理HTML、Events、动画效果等,并且方便的为网站提供AJAX交互。 2.jQuery的特点: 利用选择器来查找要操作的节点,然后将这些节点封装成一个jQuery对象,通过调用jQuery对象的方法或者属性来实现对底层被封装的节点的操作。 好处:a、兼容性更好;b、代码更简洁 3.编程步骤: step1、使用选择器查找节点 step2、调用jQuery的属性和方法 4.jQuery对象与DOM对象之间的转换 1. 什么是jQuery对象?? jQuery对象是jQuery对底层对象的一个封装,只有创建了这个对象,才能使用类库中提供的方法。 2. DOM对象 ----> jQuery对象 DOM对象向jQuery对象的转变很容易,外面追加$和圆括号即可。 function f( ){ var obj = document.getElementById(‘d1’); //DOM -> jQuery对象 var $obj = $(obj); $obj.html(‘hello jQuery’); } 3. jQuery对象 ----> DOM对象 jQuery对象向DOM对象转化,通过调用get方法加参数值0即可$obj.get(0)。 function f( ){ var $obj = $(‘#d1’); //jQuery对象 -> DOM var obj = $(obj).get (0); obj.innerHTML = ‘hello jQuery’; } 5. jQuery选择器 1. 什么是jQuery选择器?? jQuery选择器是一种类似CSS选择器的特殊说明符号,能够帮助jQuery 定位到要操作的元素上,使用了选择器可以帮助HTML实现内容与行为的分离。只需要在元素上加上Id属性。 2. 选择器的种类 a、基本选择器 #id根据指定的ID匹配一个元素 .class根据指定的类匹配一个元素 element根据的指定的元素名匹配所有的元素 啥叫异步,啥叫Ajax.咱不谈啥XMLHTTPRequest.通俗讲异步就是前台页面javascript能调用后台方法.这样就达到了无刷新.所谓的Ajax.这里我们讲二种方法 方法一:(微软有自带Ajax框架) 在https://www.360docs.net/doc/481976498.html,里微软有自己的Ajax框架.就是在页面后台.cs文件里引入 using System.Web.Services 空间然后定义静态方法(方法前加上 [WebMethod]) [WebMethod] public static string ABC(string ABC) { return ABC; } 好了,现在我们谈谈前台Js怎么处理后台返回的数据吧,可利用Jquery处理返回的纯html,json,Xml等数据.这里我们演示返回返回的数据有string、集合(List<>)、类. 但都返回Json格式(Json轻量级比XML处理起来简单).看看前台是怎么解析这些数据的. 代码如下: 前台页面: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
');
声明的json格式文本
声明的普通格式文本'+normalstring+'
');
');
"; }jQuery+AJAX+JSON
Jquery Ajax 异步处理Json数据
js将json格式的对象拼接成复杂的url参数方法
下面小编就为大家带来一篇js将json格式的对象拼接成复杂的url参数方法。小编觉得挺不错的,现在分享给大家,也给大家做个参考。 var parseParam=function(param, key){ varparamStr=""; if(paraminstanceof String||param instanceof Number||param instanceof Boolean){ paramStr+="&"+key+"="+encodeURIComponent(param); }else{ $.each(param,function(i){ vark=key==null?i:key+(paraminstanceof Array?"["+i+"]":"."+i); paramStr+='&'+parseParam(this, k); }); } returnparamStr.substr(1); }; //调用: var obj={name:'tom','class':{className:'class1'},classMates:[{name:'lily'}]}; parseParam(obj); 结果:"name=tom&class.className=class1&classMates[0].name=lily" parseParam(obj,'stu'); 结果:"https://www.360docs.net/doc/481976498.html,=tom&stu.class.className=class1&stu.classMates[0].name=lily" 将string 转换成json对象 var define = "{name: 'Michael ',email: '17bity@https://www.360docs.net/doc/481976498.html, '} "; var data = eval( '( ' + define + ') '); alert(https://www.360docs.net/doc/481976498.html,); 以上这篇js将json格式的对象拼接成复杂的url参数方法就是小编分享给大家的全部内容了,希望能给大家一个参考
js解析json
JsJson js和json 工程地址: https://https://www.360docs.net/doc/481976498.html,/svn/trunk/code/HtmlPro js解析json var json =eval(${json});//${json}:json字符串 格式 function test(){ var a = [//一个数组 {//一个json对象(类似于Bean,字段名:字段值) "省份":"福建", "面积":16800, "人口":1600, "城市":["福州","泉州","厦门","漳州"],//值可以是数组 "特产":{"吃":"海鲜","喝":"茶","玩":"武夷山"}//值可以是另一个json对象},{ "省份":"广东", "面积":6400, "人口":1800, "城市":["杭州","温州","台州","舟山"], "特产":{"吃":"海鲜","喝":"茶","玩":"西湖"} } ]; //调用属性两种;第一种:a[0]["省份"],第二种:a[0].省份 alert("省份:"+a[0]["省份"]+" 省份:"+a[0].省份+" 城市:"+a[0].城市[1]+" 特产.玩:"+a[0].特产.玩); var speciality = a[0].特产; var specialityName=""; //循环json里面的属性 for(var key in speciality){ specialityName = specialityName +" key: "+key+" value:"+speciality[key]; } alert("特产:"+specialityName);
php和js如何通过json互相传递数据
php和js如何通过json互相传递数据 当我们在结合php和javascript实现某些功能时,经常会用到json。json是js的一种数据格式,可以直接被js解析。而php无法直接读取json数据,但是php提供了json_decode函数来对json数据进行转化,从而可以被php脚本访问。同时,php也提供了json_encode函数来将数据转化成json格式。那么,js中的原生json与php中通过json_encode函数转化后的json是否完全一样呢?今天,站长就和大家一起来探讨这个问题。 我们通过php向javascript传递数组数据时,通常要将其转化为json格式,以便javascript来获取,那么我们就以数组为例,先来看一下两者之间的区别。 1、一维数组 考虑php数组$array=array("1","2","3");使用json_encode函数转化后,对应的json字符串为["1","2","3"]。 细心的朋友很快就发现,转化后得到的json字符串,就是javascript中的数组形式,那么是否可以用js的数组访问方式来访问呢? 当然是可以的,但是你将这个json字符串传递给给js时,需要使用urlencode函数对其编码,如: 访问json 我们可以用下面的js代码来验证: function show(str){ var jobj=eval(decodeURI(str)); alert(jobj[2]); } 大家自己试一试就会发现,是的,可以用js中访问一维数组的方式来访问它。eval方法将json字符串解释为json对象,因为传递过来的是字符串,不转化的话,你得到将是字符串中第三个字符的值。 我们再来对这个一维数组做一下变化,我们发现上面的一维数组没有指定索引,所以它默认为数字索引,现在我们来给它加上键名: 考虑php数组$array=array('a'=>'1','b'=>'2','c'=>'3');使用json_encode函数转化后,对应的json字符串为{"a":"1","b":"2","c":"3"}。 我们很快就发现了其中的不同,最明显的就是字符串两端的[]变成了{},那么这个字符串是否也可以按上面那样处理后被js访问呢?我们不防试一试:
使用jsp处理ajax请求(JSON)
使用jsp处理ajax请求——数据类型JSON 使用jsp处理ajax,我认为是最简单的一种实现方法,也是最基础的用法。基本实现过程是在jsp上通过XML XMLHttpRequest向接收请求的页面或文件发送消息,得到响应的返回值,局部刷新页面,达到异步处理的效果,本文介绍的是由jsp页做处理,返回json的情况。 首先创建一个jsp,这里编写关于提交的内容,例如: 表单是一个普通的form,红框中的内容是一个按钮,他调用的js是对文本框中的内容进行校验,这部分使用ajax进行异步操作,局部刷新。 首先创建一个名为getXmlHttpObject的js,让系统自己判断当前浏览器的类型,因为不同的浏览器在实现ajax的时候会有差异。 本例中的checkName(),是对文本框中的内容进行校验,这部分的js是使用post的形式实现ajax提交:
首先,前一个名为getXmlHttpObject的js如果有正确的返回值,则视为真,if判断可以进行。 Url是post的基本地址,data是传递的值,这里$(‘username’).value是通过 从form里获得的id为’username’的控件的值。 Chuli是后面回调函数的函数名,注意不要加括号。 回调函数 JSON类型的返回值,使用responseText的类型进行接收,首先要使用eval(“(“+mes+”)”)这种格式将接收的字符串转化成对象。然后取得对象中的元素。 执行ajax的时候,readyState有4个状态,当状态码到4的时候,才开始处理后面的程序,并且需要从status判断code,只有code的status是200是才表示返回的请求正确。上图中作了调试的判断。 ‘myres’是页面上局部刷新时显示的内容
如何得到json格式文件
.js模型(JSON)的获取 方法一: 1、安装Python插件。安装完后配置环境变量,path中添加Python路径。 2、找到three.js\utils\converters\obj\convert_obj_three.py : 3、并保证python convert_obj_three.py 和model.obj(模型文件)都在D:\ , 4、然后点开始>运行>把下面的命令贴到指令框内。并点确定就OK了。 5、D:\Python d:\convert_obj_three.py -i d:\model.obj -o d:\model.js 6、进入D:然后输入:如下就可以了 7、Python d:\convert_obj_three.py -i d:\qiufa001.obj -o d:\qiufa001.js 8、Python d:\convert_obj_three.py -i d:\yibiao01.obj -o d:\yibiao01.js 9、就可以完成转化啦。 方法二: 安装Blender软件 1、安装软件,并设置环境变量D:\Blender\2.70。 2、把three.js-master\utils\exporters\blender\2.65\scripts\addons下的 io_mesh_threejs文件夹考到D:\Blender\2.70\scripts\addons下 3、打开Blender->file->user preference 选择插件->导入导出选择刚才的文件,然后打钩保存设置,就可以在文件->导出选项中看到Three.js文件啦 4、Blender设置中文方法: 第一步:在菜单栏里按下“file”。 第二步:在下拉框中按下“User Preferences”。 第三步:Blender会跳出一个窗口。 第四步:按下“System”。 第六步:在“System”下按下“Default(Default)”。 第七步:在弹出框中按下“Simplified Chinese(简体中文)”。 第七步:勾选“界面”和“工具提示”,然后点击“保存为默认”。 第八步:在“文件”下拉列边框中选中“保存用户设置”,然后你的Blender就成功转换为中文。
抓取网页数据工具json提取示例
抓取网页数据工具json提取示例 使用过最新版火车采集器V9的朋友应该都发现V9新增了json提取的功能,但是许多使用抓取网页数据工具的朋友在操作此功能的时候都会觉得有点弄不明白,这里特意为大家整理了json提取的教程示例,感兴趣的朋友可以仔细研究一下。 首先大家需要明白JSON 是有两种结构,简单的说json就是javascript中的对象和数组,所以这两种结构就是对象和数组两种,通过这两种结构可以表示各种复杂的结构。下面具体说明一下 1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为属性值,所以很容易理解,取值方法为对象key 获取属性值value,这个属性值的类型可以是数字、字符串、数组、对象几种。 2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是数字、字符串、数组、对象几种。 经过对象、数组2种结构就可以组合成复杂的数据结构了。如下: { "name": "中国", "province": [{ "name": "黑龙江", "cities": { "city": ["哈尔滨", "大庆"] } }, { "name": "广东", "cities": { "city": ["广州", "深圳", "珠海"] } }, { "name": "台湾", "cities": { "city": ["台北", "高雄"] } }, { "name": "新疆", "cities": { "city": ["乌鲁木齐"] } }] } 我们可以借助工具https://www.360docs.net/doc/481976498.html,/codeformat/json测试是否是JSON,格式化后如图: