<script type="text/javaScript">
var data=[{name:"a",age:12},{name:"b",age:11},{name:"c",age:13},{name:"d",age:14}];
for(var i in data){
alert(i)
alert(data[i]);
alert(data[i].name)
for(var j in data[i]){
alert(j);
alert(data[i][j])
for(var n = 0;n<data.length;n++){
alert(data[n])
alert(data[n].name)
for(var m in data[n]){
alert(j);
alert(data[i][j])
</script>
ajax获取json数据成功,取值为undefined解决办法及原因
解决办法:var dataObj=eval("("+data+")");//转换为json对象
解决的问题
$(document).ready(function() {
$.ajax({
url: "../../DahuaServlet",
type: "Get",
dataType: "json",
data: {
action:"getVideoRecords",
token:"***********"
success: function (data) {
const json = eval("(" + data + ")");
showData(json);
},
error: function (data) {
alert("失败啦...")
},
});
function showData(json) {
let str = "";
const op = $("#op").html();
for(const i in json){
const ls = json[i];
str = "<tr><td>" + ls.recordId + "</td><td>" + ls.fileLength + "</td><td>" + ls.channelID + "</td>" +
"<td>" + ls.beginTime + "</td><td>" + ls.endTime + "</td><td>" + ls.type + "</td><td>" + op + "</td></tr>";
$("#tab").append(str);
});
eval解析JSON中的注意点
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式:
1.一种为使用eval()函数。
2.使用Function对象来进行返回解析。
使用eval函数来解析,并且使用jquery的each方法来遍历
用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明。
这里首先给出JSON字符串集,字符串集如下:
代码如下:
var data="
root:
{name:'1',value:'0'},
{name:'6101',value:'北京市'},
{name:'6102',value:'天津市'},
{name:'6103',value:'上海市'},
{name:'6104',value:'重庆市'},
}";
这里以jquery异步获取的数据类型——json对象和字符串为依据,分别介绍两种方式获取到的结果处理方式。
1.对于服务器返回的JSON字符串,如果jquery异步请求没做类型说明,或者以字符串方式接受,那么需要做一次对象化处理,方式不是太麻烦,就是将该字符串放于eval()中执行一次。这种方式也适合以普通javascipt方式获取json对象,以下举例说明:
var dataObj=eval("("+data+")");//转换为json对象
为什么要 eval这里要添加 “("("+data+")");//”呢?
原因在于:eval本身的问题。 由于json是以”{}”的方式来开始以及结束的,在JS中,它会被当成一个语句块来处理,所以必须强制性的将它转换成一种表达式。
加上圆括号的目的是迫使eval函数在处理JavaScript代码的时候强制将括号内的表达式(expression)转化为对象,而不是作为语句(statement)来执行。举一个例子,例如对象字面量{},如若不加外层的括号,那么eval会将大括号识别为JavaScript代码块的开始和结束标记,那么{}将会被认为是执行了一句空语句。所以下面两个执行结果是不同的:
alert(eval("{}"); // return undefined
alert(eval("({})");// return object[Object]
对于这种写法,在JS中,可以到处看到。
如: (function()) {}(); 做闭包操作时等。
alert(dataObj.root.length);
$.each(dataObj.root,fucntion(idx,item){
if(idx==0){
return true;
alert("name:"+item.name+",value:"+item.value);
注:对于一般的js生成json对象,只需要将$.each()方法替换为for语句即可,其他不变。
2.对于服务器返回的JSON字符串,如果jquery异步请求将type(一般为这个配置属性)设为“json”,或者利用
.getJSON()方法获得服务器返回,那么就不需要eval()方法了,因为这时候得到的结果已经是json对象了,只需直接调用该对象即可,这里以.getJSON方法为例说明数据处理方法:
$.getJSON("http://www.phpzixue.cn/",{param:"gaoyusi"},function(data){
$.each(data.root,function(idx,item){
if(idx==0){
return true;
alert("name:"+item.name+",value:"+item.value);
});
});
这里特别需要注意的是方式1中的eval()方法是动态执行其中字符串(可能是js脚本)的,这样很容易会造成系统的安全问题。所以可以采用一些规避了eval()的第三方客户端脚本库,比如JSON in JavaScript就提供了一个不超过3k的脚本库。
第二种解析方式就是使用Function对象来完成,它的典型应用就是在JQUERY中的AJAX方法下的success等对于返回数据data的解析
var json=’{“name”:“CJ”,“age”:18}’;
data =(new Function("","return "+json))();
此时的data就是一个会解析成一个 json对象了.
原文链接:https://blog.csdn.net/winner_xyy/article/details/81869667
https://www.cnblogs.com/myjavawork/articles/1979279.html
json数组的遍历(获取属性名和属性值)<script type="text/javaScript"> //数据为jsonArray var data=[{name:"a",age:12},{name:"b",age:11},{name:"c",age:13},{name:"d",age:14}]; for(var i in data){ ...
//遍历person属性包括方法,如果不想显示出方法,可用typeof(person[item])== "function"来判断
for(var item in person){
alert("person中"+item+"的值="+person[item]);
2、动态为 json对象 添加属性
需要 使用
JSONArray jsonArray = (JSONArray) object.get("data");
for(int i = 0; i < jsonArray.size(); i++) {
JSONObject obj = jsonArray.getJSONObject(i);
Integer del = (Integer) obj.get("del");
String bookId = (String) obj
环境操作系统: win7情形最近遇到这么一个情况,后台使用LinkedHashMap处理好数据,在使用renderJson()返回数据的时候发现,数据的原有顺序没有了,后来才知道renderJson()方法底层使用Gson据网上说是使用HashMap,所以是无序的。后来,我后台处理采用List<Map>的方式来返回数据,顺序有了,前端遍历的时候,遇到困难。
最开始我是这么遍历的:for(var l
数据集格式如下:包含mydata对象和myArray数组集合
{mydata:{id:1,createBy:“admin”},myArray:[“myarray1”,“myarray2”]},
假设数据存放于tempData中。
1、循环遍历
let data= [];
tempData.forEach( (item, i) =...
var jsonString = '{"bar":4,"baz":3}'
//转换为json对象
var jsonObject = JSON.parse(jsonString)
//取值为4
jsonObject.bar
2、json对象转换成json类型字符串
Json字符串
var jsonString = '{"bar":4,"baz":3}'
//转换为json对象
//console.log(data);
//json数据转为json对象
var jsonObj = eval('(' + data + ')');//这样就可以通过jsonObj.属性名获取值。
//console.log(jsonObj); //查看是否从后端获取数据
//获取书籍对象,并转为数组类型
//...
String jsonStr = "[{"key": 1568607847117,"imgType": "S","count": 1,"level": 2},
{"key": 1568607914096,"imgType": "C","count": 0,"level": 4}]";
如何拿到 level 的值呢?
JSONObject.parseArray(x).getJSONOb...
&lt;html lang="en"&gt;
&lt;head&gt;
&lt;meta charset="UTF-8"&gt;
&lt;title&gt;Document&lt;/tit
for (int i = 0; i < json.length(); i++) {
JSONObject jsonObj =json.getJSONObject(i);
String id = jsonObj.getString("ID");
String name = jsonObj.getString("name");
JSONArray的遍历,并.
在进行遍历之前先了解一下什么是jsonArray什么是jsonObject 1.JSONArray : 数组或字符串[1,2,3] 2.JSONObject : java对象,用{}包裹起来 例如:{”id”:1 , “username”:”wp”}一:JSONArray遍历//新创建一个String类型的jsonArry串
String json = "[{\"0\":{\...
首先推荐一个神器,JSON在线解析及格式化验证 - JSON.cn 里面的“JSON在线解析”和“JSON生成JAVA实体”两个功能,前几天可是帮了我大忙了。前几天写一个功能,在这个功能中前端传过来的JSON十分复杂,示例如:
可以发现,推过来的这个JSON不仅复杂,而且有一点十分让人在意,那就是它的属性值首字母基本上都是大写。这也就使得通过“JSON生成JAVA实体”获得的Java无法被直接使用。有两种解决方法(1)通过 JSONObject 。 在接收前端传来的JSON数据时,以String的形式接
使用 JSON.parse()方法处理以上数据,将其转换为 JavaScript 对象:
var obj = JSON.parse('{"id":1, "name":"Xu Albter", "age":"18"}');
然后我们便可以通过以下方式取出属性值了
obj.id //取出 id 值
obj.name //取出 name 值
obj.age //取出 age 值
紧着着前端页面遍历,后端传递来的json字符串中的集合数据,先来看一下json字符串的形式,如下图:
在前端页面的ajax中遍历json字符串中的集合数据,如下图:
直接在.each()方法中遍历后端返回的json对象,也即是直接写.each()方法中遍历后端返回的json对象,也即是直接写.each()方法中遍历后端返回
data.forEach(function(item) {
document.getElementById("name").innerHTML += item.name + "<br/>";
document.getElementById("age").innerHTML += item.age + "<br/>";
该代码会将 JSON 数组 data 中的每个对象的 name 和 age 属性的值分别赋值给 HTML 的两个 td 元素。需要注意的是,这里使用了 innerHTML 属性来给 td 元素赋值,并且使用了 += 运算符来将每个对象的值拼接在一起。