js如何读取与遍历json

js如何读取与遍历json,第1张

json。本质就是键值对。是网页特效对象的序列化,是一个字符串,是一个数组。【js中,字符串是对象,数组是对象,类也是对象,一切皆对象】json(javascript object notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于javascript(standard ecma-262 3rd edition - december 1999)的一个子集。 json采用完全独立于语言的文本格式,但是也使用了类似于c语言家族的习惯(包括c, c++, c#, java, javascript, perl, python等)。这些特性使json成为理想的数据交换语言<scriptfunction a(){var str = {error:error here!hello!} var jsonobject = eval('('+str+')') alert(jsonobject.error) }</script<a onclick=a()test</a下面看个简单的实例{date:1999-9-9,x:100,y:100}, [['张三','20'],['李四','30']]这就是json。本质就是键值对。是javascript对象的序列化,是一个字符串,是一个数组。【js中,字符串是对象,数组是对象,类也是对象,一切皆对象】<script language=javascriptvar menu1 ={a:{title:1},//在js中,键值有没有双引号都无所谓,不是错误,语法就是这么规定的。b:{title:2},c:{title:3},d:{title:4}}alert(menu1.a.title)for(var x in menu1){document.write(x.tostring()+</br)document.write(menu1[x].title+</br)document.write(</br==================</br)}</script好了现在提供一款官网的写法

用JS原生的方法即可,不过没在JSON上看到数值啊,我帮你取到了数组,剩下的自己 *** 作下就可以了。

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta http-equiv="X-UA-Compatible" content="ie=edge">

<title>Document</title>

</head>

<body>

<div id="box"></div>

<img name="text"></img>

<script>

var JosnInfo = {

"sites": [{

"title": "批次数量",

"Field": "pcsl",

"ReadOnly": "readonly='readonly'",

"Hidetd": "true",

"tdEvent": " onclick='openPC(this)'",

"tdClass": "tdspbh",

"txtAlign": ""

},

{

"title": "编号",

"Field": "spbh",

"ReadOnly": "readonly='readonly'",

"Hidetd": "false",

"tdEvent": " ",

"tdClass": "tdspbh",

"txtAlign": ""

},

{

"title": "名称",

"Field": "spmc",

"ReadOnly": "readonly='readonly'",

"Hidetd": "false",

"tdEvent": " onkeydown='SXZY(this)' ",

"tdClass": "tdspmc",

"txtAlign": ""

},

{

"title": "规格",

"Field": "ggxh",

"ReadOnly": "readonly='readonly'",

"Hidetd": "false",

"tdEvent": " onkeydown='SXZY(this)' ",

"tdClass": "tdggxh",

"txtAlign": ""

},

{

"title": "产地",

"Field": "spcd",

"ReadOnly": "readonly='readonly'",

"Hidetd": "false",

"tdEvent": " onkeydown='SXZY(this)' ",

"tdClass": "tdcd",

"txtAlign": ""

},

{

"title": "单位",

"Field": "spdw",

"ReadOnly": "readonly='readonly'",

"Hidetd": "false",

"tdEvent": " onkeydown='SXZY(this)' ",

"tdClass": "tddw",

"txtAlign": "text-align:center"

},

{

"title": "数量",

"Field": "spsl",

"ReadOnly": "",

"Hidetd": "false",

"tdEvent": " onpaste='return false' onkeydown='return check(event)' onkeydown='SXZY(this)' onblur='sl_onblur(this)' ",

"tdClass": "tdsl",

"txtAlign": "text-align:right"

},

{

"title": "单价",

"Field": "spdj",

"ReadOnly": "",

"Hidetd": "false",

"tdEvent": " onpaste='return false' onkeydown='return check(event)' onkeydown='SXZY(this)' onblur='dj_onblur(this)'",

"tdClass": "tddj",

"txtAlign": "text-align:right"

}

]

}

JosnInfo = JSON.stringify(JosnInfo)

var text = JSON.parse(JosnInfo)

console.log(text.sites)

</script>

</body>

</html>

你这里的jsonstr本身就已经是对象了,而json只是字符串,也就是说对方传递过来的字符串而已。

应该写成

var jsonStr = "{qiyi:'mp4',tudou:'3gp',youku:'mp4'}"

这样可以表示jsonStr是一个字符串,而现在要jsonStr去执行一下就可以了!

如:

var c = eval(jsonStr)

然后就可以调用了!如c.qiyi等等。不过这里不太好理解的,eval就是将jsonStr字符串当指令执行了,将执行结果传递给c而已。换一句方式可能会更好的理解的!

eval(" var c = "+jsonStr+"")

也就是说重新组合一个语句,这样可以直接使用c.qiyi了!

但其实是一样的道理的,只不过很少人会用到第二种!因为如果eval没有顺利执行时,第二种会出现错误,而第一种则会出现undefined的结果,第一种与第二种的区别就是不管是否空值,第一种c对象是存在的!而第二种却未必见得!第二种方案下,执行了一个语句,然后就感觉“凭空”开始使用一个对象了!然后这样虽是不好,其中是说明下边的语句都依赖于eval这样的一个细节语句,所以不是很多的!

也就是说:

var c = eval("{qiyi:'mp4',tudou:'3gp',youku:'mp4'}")

就是将json执行后的结果。由此可以看出你对数据传递上还有些不理解的!


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

原文地址: http://outofmemory.cn/tougao/12113329.html

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

发表评论

登录后才能评论

评论列表(0条)

保存