㈠ js面試題,ajax請求時,如何解釋json數據
客戶端HTML代碼:
<table>
<thead>
<tr>
<td>學號</td>
<td>姓名</td>
<td>班級</td>
<td>性別</td>
<td>電話</td>
</tr>
</thead>
<tbody></tbody>
<input id="btnget" type="button" value="載入數據" />
javascript代碼:
$(function(){
$("#btnget").click(function(){
$.Ajax({
type:"post",
dataType:"Json",
url:"data.ashx",
success:function(msg){
var str="";
for(i in msg){
str+="<tr><td>"+msg[i].id+
"</td><td>"+msg[i].name+
"</td><td>"+msg[i].cla+
"</td><td>"+msg[i].sex+
"</td><td>"+msg[i].tel+
"</td></tr>";
}
$("tbody").append(str);
}
});
});
});
樣式部分:
<style type="text/css">
table{
boeder-collapse:collapse;
}
table td{
text-align:center;
border:1px solid gray;
padding:3px 10px;
}
</style>
伺服器端返回的json數據代碼:
string data=[{\"id\":\"2010324268\",\"name\":\"林宇\",\"cla\":\"10軟體\",\"sex\":\"男\",\"tel\":\"***********\"},{\"id\":\"2010324269\",\"name\":\"李四\",\"cla\":\"10網路\",\"sex\":\"男\",\"tel\":\"***********\"},{\"id\":\"2010324270\",\"name\":\"肖玲\",\"cla\":\"10網路\",\"sex\":\"女\",\"tel\":\"***********\"}];
context.Response.Write(data);
㈡ js中除了eval方法 還有什麼方法來解析json
eval解析JSON中的注意點 在JS中將JSON的字元串解析成JSON數據戚察鋒格式,一般有兩種方式: 1.一種為使用eval()函數高晌。 2. 使用Function對象來進行返回解析沒陪。 使用eval函數來解析,並且使用jquery的each方法來遍歷 用jquery解析JSON數據的方法
㈢ 在js中怎麼解析JsonObject對象數組
js和java中的json對象無法互相轉換的吧(用struts2可以),可以在java中將對象轉換為json字元串,傳到js後,再在js中將json字元串轉換成json對象
Java code
Map map1 = new HashMap();
Map map2 = new HashMap();
map1.put("id", 1);
map1.put("name", "張三");
map2.put("id", 2);
map2.put("name","李四");
List list = new ArrayList();
list.add(map1)
list.add(map2)
Map jsonMap = new HashMap();
jsonMap.put("jsonstr",list); //必須是map對象才能轉換成json對象
JSONObject json = JSONObject.fromObject(map); //要用到json-lib-2.3-jdk15.jar
return json.toString();
記得引入json.js
JScript code
UserAction.getUser(function(result) { var jsonResult = JSON.parse(result);//如何不行用var jsonResult=JSON.parseJSON(),json版本問題 var resultList = jsonResult['jsonstr']; for(var one in resultList){ var item= resultList[one]; alert(item.id); alert(item.name); }
㈣ js解析Json需三層循環,有其他好的方法嗎
使用遞歸顫碧或,下面慧野是一個JSON轉String的函數應該會對你有所幫助
functionjsonToString(obj){
varTHIS=this;
switch(typeof(obj)){
case'string':
return'"'+obj.replace(/(["\])/g,'\$1')+'"';
case'array':
return'['+obj.map(THIS.jsonToString).join(',')+']';
case'object':
if(objinstanceofArray){
varstrArr=[];
varlen=obj.length;
for(vari=0;i<len;i++){
strArr.push(THIS.jsonToString(obj[i]));
}
return'['+strArr.join(',')+']';
}elseif(obj==null){
return'null';
}else{
varstring=[];
for(varpropertyinobj)string.push(THIS.jsonToString(property)+':'+THIS.jsonToString(obj[property]));
return'{'+string.join(',')+'}';
}
case'number':
returnobj;
casefalse:茄伍
returnobj;
}
}
㈤ JS解析json數據(如何將json字元串轉化為數
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<SCRIPT LANGUAGE="JavaScript">
var t="{'firstName': 'cyra', 'lastName': 'richardson', 'address': { 'streetAddress': '1 Microsoft way', 'city': 'Redmond', 'state': 'WA', 'postalCode': 98052 },'phoneNumbers': [ '425-777-7777','206-777-7777' ] }";
var jsonobj=eval('('+t+')');
alert(jsonobj.firstName);
alert(jsonobj.lastName);
var t2="[{name:'zhangsan',age:'24'},{name:'lisi',age:'30'},{name:'wangwu',age:'16'},{name:'tianqi',age:'7'}] ";
var myobj=eval(t2);
for(var i=0;i<myobj.length;i++){
alert(myobj[i].name);
alert(myobj[i].age);
}
var t3="[['<a href=# onclick=openLink(14113295100,社旗縣國稅局橋頭稅務所,14113295100,,swjg_dm);>14113295100</a>','社旗縣國稅局橋頭稅務所','社旗縣城郊鄉長江路西段']]";
//通過eval() 函數可以將JSON字元串轉化為對象
var obj = eval(t3);
for(var i=0;i<obj.length;i++){
for(var j=0;j<obj[i].length;j++){
alert(obj[i][j]);
}
}
/*
//stringifier 函數的作用跟 parse 相反, 用來將一個js對象轉換為 JSON 文本。
var jsonText = JSON.stringify(obj);
alert(jsonText);
//如果基於安全的考慮的話,最好是使用一個 JSON 解析器。 一個 JSON 解析器將只接受 JSON 文本。所以是更安全的。
var myObject = JSON.parse(myJSONtext, filter);
//可選的 filter 參數將遍歷每一個value key 值對, 並進行相關的處理。如:
//如
myData = JSON.parse(text, function (key, value) {
return key.indexOf('date') >= 0 ? new Date(value) : value; });
//stringifier 函數的作用跟 parse 相反, 用來將一個js對象轉換為 JSON 文本。
var myJSONText = JSON.stringifier(myObject);
*/
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
㈥ js怎麼解析geojson 格式的
首先要理解什麼是json,在js中json實際上就是一個對象了,可以通過jquery的方法將json轉化成字元串,內或者容將字元串轉化為json。
$.parse(),這個方法可以把字元串轉成Json。
JSON.stringify()方法用於把json轉成字元串。
js中一般可以直接對json進行操作的,比如一個json對象為:
var obj = {name:'abd'};
那麼可以直接通過"."來獲取對象的屬性,
obj.name;//abd
就可以拿到對象的值了。
㈦ js解析json字元串報錯解決方案(帶有轉義字元的json字元串)
場景:從後台請求回來的數據中帶有json格式的字元串,需要處理成json對象才能進行操作。
JSON.parse():
使用JSON.parse方法來解析json字元串。
報錯: Uncaught SyntaxError: Unexpected token } in JSON at position 30
Uncaught SyntaxError: Unexpected token ' in JSON at position 1
這種報錯是由於,json字元串的格式有問題,json字元串中對象的最後一個元素後面不可以再加','逗號了。比如'{ "name": "cxh", "sex": "man",}'使用JSON.parse()就會報錯,而且 在json字元串中鍵值對需要用雙引號引起來。
解決方案:使用eval()
報錯:SyntaxError: Unexpected token e in JSON at position 1
由於請求回來的json中帶有轉義字元,所以才會報這個錯誤。
解決方案:帶有轉義字元的json字元串使用json
json數據使用JSON.parse()有瀏覽器是不兼容JSON這個對象的,或者有的裡面有JSON.parse解析不了的東西,所以暫時還是使用: eval("("+data+")");
json源數據字元有轉義符應該是必須的,你要看解析出來後是否有多餘的轉義符
json轉字元串JSON.stringify總體效果還可以:
前導 0 和小數點報錯:SyntaxError: JSON.parse: expected ',' or '}' after property value
SyntaxError: JSON.parse: unterminated fractional number
Uncaught SyntaxError: Unexpected number in JSON at position 25
Uncaught SyntaxError: Unexpected token } in JSON at position 26
數字不能用 0 開頭,比如01,並且你的小數點後面必須跟著至少一個數字。
㈧ js怎麼載入&解析json文件,原生的
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,採用完全獨立於語言的文本格式,是理想的數據交換格式。同時,JSON是 JavaScript 原生格式,這意味著在 JavaScript 中處理 JSON數據不須要任何特殊的 API 或工具包。
本文主要是對JS操作JSON的要領做下總結。
在JSON中,有兩種結構:對象和數組。
1. 一個對象以「{」(左括弧)開始,「}」(右括弧)結束。每個「名稱」後跟一個「:」(冒號);「『名稱/值』 對」之間運用 「,」(逗號)分隔。 名稱用引號括起來;值如果是字元串則必須用括弧,數值型則不須要。例如:
var o={"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"};
2. 數組是值(value)的有序集合。一個數組以「[」(左中括弧)開始,「]」(右中括弧)結束。值之間運用 「,」(逗號)分隔。
例如:
var jsonranklist=[{"xlid":"cxh","xldigitid":123456,"topscore":2000,"topplaytime":"2009-08-20"},{"xlid":"zd","xldigitid":123456,"topscore":1500,"topplaytime":"2009-11-20"}];
為了方便地處理JSON數據,JSON提供了json.js包,下載地址:http://www.json.org/json.js
在數據傳輸流程中,json是以文本,即字元串的形式傳遞的,而JS操作的是JSON對象,所以,JSON對象和JSON字元串之間的相互轉換是關鍵。例如:
JSON字元串:
var str1 = '{ "name": "cxh", "sex": "man" }';
JSON對象:
var str2 = { "name": "cxh", "sex": "man" };
一、JSON字元串轉換為JSON對象
要運用上面的str1,必須運用下面的要領先轉化為JSON對象:
//由JSON字元串轉換為JSON對象
var obj = eval('(' + str + ')');
或者
var obj = str.parseJSON(); //由JSON字元串轉換為JSON對象
或者
var obj = JSON.parse(str); //由JSON字元串轉換為JSON對象
然後,就可以這樣讀取:
Alert(obj.name);
Alert(obj.sex);
特別留心:如果obj本來就是一個JSON對象,那麼運用 eval()函數轉換後(哪怕是多次轉換)還是JSON對象,但是運用 parseJSON()函數處理後會有疑問(拋出語法異常)。
二、可以運用 toJSONString()或者全局要領 JSON.stringify()將JSON對象轉化為JSON字元串。
例如:
var last=obj.toJSONString(); //將JSON對象轉化為JSON字元
或者
var last=JSON.stringify(obj); //將JSON對象轉化為JSON字元
alert(last);
留心:
上面的多個要領中,除了eval()函數是js自帶的之外,其他的多個要領都來自json.js包。新版本的 JSON 修改了 API,將 JSON.stringify() 和 JSON.parse() 兩個要領都注入到了 Javascript 的內建對象裡面,前者變成了 Object.toJSONString(),而後者變成了 String.parseJSON()。如果提示找不到toJSONString()和parseJSON()要領,則說明您的json包版本太低。
㈨ js解析與序列化json數據(一)json.stringify()的基本用法
早期的JSON解析器基本上就是使用JavaScript的eval()函數。由於JSON是JavaScript語法的自己,因此eval()函數可以解析、解釋並返回JavaScript的對象和數組。
ECMAScript
5對解析JSON的行為進行了規范,定義了全局對象JSON。
JSON對象有兩個方法:stringify()和parse()。在最簡單的情況下,這兩個方法分別用於把JavaScript對象序列化為JSON字元串和把JSON字元串解析為原生JavaScript。例如:
新建一個HTML:代碼如下:
復制代碼
代碼如下:
<html>
<head>
<title></title>
<script
type="text/javascript">
function
init()
{
var
book={
title:"JavaScript高級程序設計",
authors:[
"Nicholas
C.
Zakas"
],
edition:3,
year:2011
};
var
jsonBook=JSON.stringify(book);
var
objectBook=JSON.parse(jsonBook);
var
title=objectBook.title;}
</script>
</head>
<body>
<input
type="button"
onclick="init()"
value="測試"
/>
</body>
</html>
默認情況下,JSON.stringify()輸出的JSON字元串不包含任何空字元或縮進,因此保存在jsonBook中的字元串如下所示:
復制代碼
代碼如下:
{"title":"JavaScript高級程序設計","authors":["Nicholas
C.
Zakas"],"edition":3,"year":2011}
在序列化JavaScript對象時,所有函數及原型成員都會被有意忽略,不體現在結果中。此外,值為undefined的任何屬性也都會被跳過。結果中最終都是值為有效JSON數據類型的實例屬性。
注意,雖然book與objectBook具有相同的屬性,但它們是兩個獨立的、沒有任何關系的對象。如果傳給JSON.parse()的字元串不是有效的JSON,該方法會拋出錯誤。
㈩ js解析json數據,並找出其中重復數據出現的次數!
<metahttp-equiv="Content-Type"content="text/html;charset=utf-8">
<script>
functioncountJson(json){
if(""==json){
returnfalse;
}
varobj=eval("("+json+")"),len=obj.length,result=newArray();
for(vari=0;i<len;i++){
varid=obj[i].id;
if(result[id]){
result[id]=result[id]+1;
}else{
result[id]=1;
}
}
if(result.length>0){
returnresult;
}
return'統計無結果';
}
vara='[{"id":1,"name":"1"},{"id":2,"name":"2"},{"id":1,"name":"1"}]',
o=countJson(a),
k=o.length,
html="";
for(variino){
html+="id為"+i+"的有"+o[i]+"個<p>";
}
document.write(html);
</script>
這個函數的參數是傳的json字元串,如果你傳入的本身就是一個object,就把那段eval去掉