首页 > 作文

js读取本地json文件数据(php和mysql网站模板)

更新时间:2023-04-05 08:24:07 阅读: 评论:0

json语法

json和xml类型,都是一种结构化的数据表示方式。所以,json并不是javascript独有的数据格式,其他很多语言都可以对json进行解析和序列化。

json的语法可以表示三种类型的值:

①简单值:可以在json中表示字符串、数值、布尔值和null。但json不支持javascript中的特殊值undefined。

②对象:顾名思义。

③数组:顾名思义。

1.简单值

“lee”这两个量就是json的表示方法,一个是json数值,一个是json字符串。布尔值和null也是有效的形式。但实际运用中要结合对象或数组。

2.对象

javascript对象字面量表示法:

var box = {  name : 'lee',  age : 100 }; 

而json中的对象表示法需要加上双引号,并且不存在赋值运算和分号:

{  "name" : "lee", //使用双引号,否则转换会出错  "age" : 100 } 

3.数组

javascript数组字面量表示法:

var box = [100, ‘lee’, true];

而json中的数组表示法同样没有变量赋值和分号:

[100, “lee”, true]

一般比较常用的一种复杂形式是数组结合对象的形式:

[  {  "title" : "a",  "num" : 1  },  {  "title" : "b",  "num" : 2  },  {  "title" : "c",  "num" : 3  }  ]

ps:一般情况下,我们可以把json结构数据保存到一个文本文件里,然后通过xmlhttprequest对象去加载它,得到这串结构数据字符串(xmlhttprequest对象将在aajx章节中详细探讨)。所以,我们可以模拟这种过程。

模拟加载json文本文件的数据,并且赋值给变量。

var box = '[{"name" : "a","age" : 1},{"name" : "b","age" : 2}]'; 

ps;上面这短代码模拟了var box娱乐八卦新闻 = load(‘demo.json’);赋值过程。因为通过load加载的文本文件,不管内容是什么,都必须是字符串。所以两边要加上双引号。

其实json就是比普通数组多了两边的双引号,普通数组如下:

var box = [{name : 'a', age : 1},{name : 'b', age : 2}]; 

4.解析和序列化

如果是载入的json文件,我们需要对其进行建党感言一句话使用,那么就必须对json字符串解小小讲解员析成原生的javascript值。当然,如果是原生的javascript对象或数组,也可以转换成json字符串。

对于讲json字符串解析为javascript原生值,早期采用的是eval()函数。但这种方法既不安全,可能会执行一些恶意代码。

varbox = '[{"name" : "a","age" : 1},{"name" : "b","age" : 2}]'; alert(box); //json字符串 varjson = eval(box); //使用eval()函数解析 alert(json); //得到javascript原生值 

ecmascript5对解析json的行为进行规范,定义了全局对象json。支持这个对象的浏览器有ie8+、firefox3.5+、safari4+、chrome和opera10.5+。不支持的浏览器也可以通过一个开源库json.js来模拟执行。json对象提供了两个方法,一个是将原生javascript值转换为json字符串:stringify();另一个是将json字符串转换为javascript原生值:par()。

var box = '[{"name" : "a","age" : 1},{"name" : "b","age" : 2}]'; //特别注意,键要用双引号 alert(box); var json = json.par(box);广东医学 //不是双引号,会报错 alert(json); var box = [{name : 'a', age : 1},{name : 'b',age : 2}]; //javascript原生值 var json = json.stringify(box); //转换成json字符串 alert(json); //自动双引号 

在序列化json的过程中,stringify()方法还提供了第二个参数。第一个参数可以是一个数组,也可以是一个函数,用于过滤结果。第二个参数则表示是否在json字符串中保留缩进。

varbox = [{name : 'a', age : 1, height : 177},{name : 'b', age : 2, height : 188}]; var json = json.stringify(box, ['name', 'age'],4); alert(json); 

ps:如果不需要保留缩进,则不填即可;如果不需要过滤结果,但又要保留缩进,则讲过滤结果的参数设置为null。如果采用函数,可以进行复杂的过滤。

varbox = [{name : 'a', age : 1, height : 177},{name : 'b', age : 2, height : 188}]; var json = json.stringify(box, function (key, value) {  switch (key) {  ca 'name' :  return'mr.' + value;  ca懿品府 'age' :  returnvalue + '岁';  default:  returnvalue;  } }, 4); alert(json); 

ps:保留缩进除了是普通的数字,也可以是字符。

还有一种方法可以自定义过滤一些数据,使用tojson()方法,可以将某一组对象里指定返回某个值。

varbox = [{name : 'a', age : 1, height : 177, tojson : function () {  return this.name; }},{name : 'b',age : 2, height : 188, tojson : function () {  return this.name; }}]; var json = json.stringify(box); alert(json); 

ps:由此可见序列化也有执行顺序,首先先执行tojson()方法;如果应用了第二个过滤参数,则执行这个方法;然后执行序列化过程,比如将键值对组成合法的json字符串,比如加上双引号。如果提供了缩进,再执行缩进操作。

解析json字符串方法par()也可以接受第二个参数,这样可以在还原出javascript值的时候替换成自己想要的值。

varbox = '[{"name" : "a","age" : 1},{"name" : "b","age" : 2}]'; var json = json.par(box, function (key, value) {  if (key == 'name') {  return'mr.' + value;  } el {  returnvalue;  } }); alert(json[0].name);

总结

通过本篇文章,你可以学习到以下知识点:

1.json简单值;

2.对象;

3.数组;

本文发布于:2023-04-05 08:24:06,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/249835a46640e8f278adc51096ab9cdb.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:js读取本地json文件数据(php和mysql网站模板).doc

本文 PDF 下载地址:js读取本地json文件数据(php和mysql网站模板).pdf

标签:字符串   数组   对象   双引号
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图