js怎么读取本地的 json数据

js怎么读取本地的 json数据,第1张

var

json

=

{

contry:{

area:{

man:"12万",

women:"10万"

}

}

}

//方式一:使用eval解析

var

obj

=

eval(json)

alert(obj.constructor)

alert(obj.contry.area.women)

//方式二:使用Funtion函数

var

strJSON

=

"{name:'json

name'}"//得到的JSON

var

obj

=

new

Function("return"

+

strJSON)()//转换后的JSON对象

alert(obj.name)//json

name

alert(obj.constructor)

//复杂一点的json数组数据的解析

var

value1

=

[{"c01":"1","c02":"2","c03":"3","c04":"4","c05":"5","c06":"6","c07":"7","c08":"8","c09":"9"},

{"c01":"2","c02":"4","c03":"5","c04":"2","c05":"8","c06":"11","c07":"21","c08":"1","c09":"12"},

{"c01":"5","c02":"1","c03":"4","c04":"11","c05":"9","c06":"8","c07":"1","c08":"8","c09":"2"}]

var

obj1

=

eval(value1)

alert(obj1[0].c01)

//复杂一点的json的另一种形式

var

value2

=

{"list":[

{"password":"1230","username":"coolcooldool"},

{"password":"thisis2","username":"okokok"}],

"array":[{"password":"1230","username":"coolcooldool"},{"password":"thisis2","username":"okokok"}]}

var

obj2

=

eval(value2)

alert(obj2.list[0].password)

问题1:js访问本地json

如果可以这样随意访问,你打开的任何网站不就可以通过js把你本地文件全部获取到了吗,这是非常危险的;这个不是技术上的能不能,而是安全策略问题,解决方法肯定有,大概是给浏览器某种授权。

我比较推荐换一种方式来解决这个问题,你要的结果是访问json文件,如果json文件不是很大的话,何不直接用个js变量保存它的值;

另外可以考虑部署到服务器,通过ajax请求获取,通过jquery可以如下写:

$.get('/content/test.json', function(data) {

  alert(data)})

问题2:如何在前端显示

js *** 纵DOM,可以简单粗暴地加到body里,当然有更好展现方式,推荐单独写个div:

$('body').append(data)

点击“下载”按钮,会把文本域中的内容全部作为一个.html后缀文件下载下来,各流程效果如下面几张图:

下载按钮点击示意

出现下载确认框(根据浏览器的设置不同也可能直接下载),然后名称默认就是test.html。

默认就是test.html名称

然后对应保存目录就多了个类似下图的文件:

保存好的test.html文件截图示意

双击该test.html文件可以在浏览器中正常浏览,说明,保存信息无误。

test.html在浏览器中访问的效果

触发下载的JS代码就几行:

对于非文本文件,也是可以直接JS触发下载的,例如,如果我们想下载一张图片,可以把这张图片转换成base64格式,然后下载。

代码示意:

不止是.html文件,.txt, .json等只要内容是文本的文件,都是可以利用这种小技巧实现下载的。

在Chrome浏览器下,模拟点击创建的<a>元素即使不append到页面中,也是可以触发下载的,但是在Firefox浏览器中却不行,因此,上面的funDownload()方法有一个appendChild和removeChild的处理,就是为了兼容Firefox浏览器。

download属性从Edge13开始支持,理论上,edge也应该支持直接JS触发的浏览器文件下载,但我手头上并无相关浏览器,无法确定真实情况如何,欢迎有条件的小伙伴帮忙测下告知结果。

就这些吧,感谢阅读!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9417303.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存