s获取到"[{NAME=王新成, USER_ID=201309040047042, SCORE=0.5, PASS_DATE=2011-12-10, QUARTERS_ID=2013062115276760}, {NAME=张宁, USER_ID=201309040047068, SCORE=0.3, PASS_DATE=2010-03-19, QUARTERS_ID=2013062115276762}]";
我要如何解析,并且遍历。
从后台获取到这种格式数据,我需要动态生成<tr><td>把数据加进去,所以首先要解析并且遍历。
for(var i=0;i<json.length;i++){
for(var key in json){
alert(key+':'+json[i][key]);
}
}
这样好像遍历不出来。
这样也解析不出来 var obj = eval("("+json+")");
你这个看着像是java里List<Map>直接打印而不是转成JsonArray出来的数据
写了一段js代码,如果值里没有=号可以完美处理
1 var src= "[{NAME=王新成, USER_ID=201309040047042, SCORE=0.5, PASS_DATE=2011-12-10, QUARTERS_ID=2013062115276760}, {NAME=张宁, USER_ID=201309040047068, SCORE=0.3, PASS_DATE=2010-03-19, QUARTERS_ID=2013062115276762}]"; 2 var rObj = /{([^=]+=[^,]+),\s+([^={]+=[^,}]+)*/g 3 var m = src.match(r) 4 var rNvp = /([^,={\s]+=[^,]+)/g 5 var list = []; 6 for(var i=0;i<m.length;i++){ 7 var m2 = m[i].match(rNvp); 8 var o={}; 9 for(j = 0;j<m2.length;j++){ 10 var arr = m2[j].split("="); 11 o[arr[0]] = arr[1]; 12 } 13 list.push(o); 14 } 15 console.log(list)
字符串要加'',并且带[]的不用加(),用eval(),可以用firebug,或chrome的控制台调试下
也可以用JSON.parse(json);试试
如果你的数据是"NAME=王新成"这样的,不是这样的:NAME:"王新成" 或者 NAME="王新成"
那就不是json格式数据,也不是js对象。就只能自己字符串分割或者正则比配了。
我这个应该不是Json了,后台传到前端的数据是List<Map<Object,String>> lists这种格式,前端显示 可以直接${lists.Name}.. 或者我${lists.Name}取值?
@Tomdwannn: 找后端程序员修改序列化代码,让他序列化为json。或者你自己写正则匹配吧
把=替换成:就可以当做json解析了
唉,答错了,不能解析,你的这个格式真是奇葩,手动解析吧
数据格式有问题
如果是C#
前提引用JsonConvet的dll
首先可以定义实体类字段分别为name,USER_ID,SCORE,PASS_DATE,QUARTERS_ID
实体类名 变量=JsonConvert.SerializeObject<json格式>(实体类); (记不清是DeserializeObject还是SerializeObject了)
这个是针对于单个的[{NAME=王新成, USER_ID=201309040047042, SCORE=0.5, PASS_DATE=2011-12-10, QUARTERS_ID=2013062115276760}],你的问题差不多等同
或者看http://blog.csdn.net/coolszy/article/details/8606803
楼主,这个问题你最后怎么解决的?