js将字符串转换成对象和数组 JS中如何把JSON格式的字符串转化为一个对象或数组呢?
js\u600e\u4e48\u628ajson\u5b57\u7b26\u4e32\u8f6c\u6362\u6210\u5bf9\u8c61\u6570\u7ec4\u7b2c\u4e00\u79cd
JSON.parse(jsonString)
\u7b2c\u4e8c\u79cd
eval("("+jsonString+")")
\u7b2c\u4e09\u79cd
var obj=(function ToJSON(o){
if(typeof(o)=="string")try{return new Function("return "+o)();}catch(e){return null;}
})("[{name:'zhangsan',age:'24'},{name:'lisi',age:'30'},{name:'wangwu',age:'16'},{name:'tianqi',age:'7'}]");
for(var b in obj)alert(obj[b].name);
JS\u4e2d\u5982\u4f55\u628aJSON\u683c\u5f0f\u7684\u5b57\u7b26\u4e32\u8f6c\u5316\u4e3a\u4e00\u4e2a\u5bf9\u8c61\u6216\u6570\u7ec4\u5462\uff1f\u4e0b\u9762\u5c0f\u7f16\u5c31\u4e3a\u5927\u5bb6\u5e26\u6765\u4e00\u7bc7js \u8f6cjson\u683c\u5f0f\u7684\u5b57\u7b26\u4e32\u4e3a\u5bf9\u8c61\u6216\u6570\u7ec4(\u524d\u540e\u53f0)\u7684\u65b9\u6cd5\u3002\u5c0f\u7f16\u89c9\u5f97\u633a\u4e0d\u9519\u7684\uff0c\u73b0\u5728\u5c31\u5206\u4eab\u7ed9\u5927\u5bb6\uff0c\u4e5f\u7ed9\u5927\u5bb6\u505a\u4e2a\u53c2\u8003\u3002\u4e00\u8d77\u8ddf\u968f\u5c0f\u7f16\u8fc7\u6765\u770b\u770b\u5427
\u4e00\u3001\u524d\u53f0
// \u8f6c\u6362\u6210\u5bf9\u8c61
var myObject = JSON.parse(_data);
alert("\u5bf9\u8c61\uff1a"+myObject.msg);
// \u8f6c\u6362\u6210\u6570\u7ec4
var myobj = eval("["+_data+"]");
for (var i = 0; i < myobj.length; i++) {
alert("\u6570\u7ec4\uff1a"+myobj[i].msg);
}
//\u628ajson\u683c\u5f0f\u7684\u5b57\u7b26\u4e32\u8f6c\u6210JSON\u5bf9\u8c61
var json1 = '{"department": "\u4e2d\u5175","address": "\u5317\u4eac","contacts": "\u674e\u7855","telphone": "15201274666","email": "[email protected]","fax": "0108596666"}';
var json2 = '{"department": "\u4e2d\u51752","address": "\u5317\u4eac2","contacts": "\u674e\u78552","telphone": "152012746662","email": "[email protected]","fax": "01085966662"}';
var jsonObj = $.parseJSON(json1); \u6216\u7528eval\u65b9\u6cd5
//\u628a\u6570\u7ec4\u8f6c\u6210JSON\u5bf9\u8c61
var arr=new Array();
arr.push(json1);
arr.push(json2);
var b=JSON.stringify(arr)
\u4e8c\u3001\u540e\u53f0
\u5f53\u9700\u8981\u628a\u4e00\u4e32\u5b57\u7b26\u4e32\u8f6c\u6210\u4e00\u4e2ajson \u6570\u7ec4 \uff0c\u5e76\u904d\u5386\u5176\u4e2d\u7684\u5185\u5bb9\u65f6\u3002
\u9996\u9875\u5bfc\u5165 net.sf.json.JSONArray\u548cnet.sf.json.JSONObject \u4e24\u4e2ajar \u5305
String str = "[{name:'a',value:'aa'},{name:'b',value:'bb'},{name:'c',value:'cc'},{name:'d',value:'dd'}]" ; // \u4e00\u4e2a\u672a\u8f6c\u5316\u7684\u5b57\u7b26\u4e32
JSONArray json = JSONArray.fromObject(str ); // \u9996\u5148\u628a\u5b57\u7b26\u4e32\u8f6c\u6210 JSONArray \u5bf9\u8c61
if(json.size()>0){
for(int i=0;i<json.size();i++){
JSONObject job = json.getJSONObject(i); // \u904d\u5386 jsonarray \u6570\u7ec4\uff0c\u628a\u6bcf\u4e00\u4e2a\u5bf9\u8c61\u8f6c\u6210 json \u5bf9\u8c61
System.out.println(job.get("name")+"=") ; // \u5f97\u5230 \u6bcf\u4e2a\u5bf9\u8c61\u4e2d\u7684\u5c5e\u6027\u503c
}
}
\u4ee5\u4e0a\u5c31\u662f\u5c0f\u7f16\u4e3a\u5927\u5bb6\u5e26\u6765\u7684js \u8f6cjson\u683c\u5f0f\u7684\u5b57\u7b26\u4e32\u4e3a\u5bf9\u8c61\u6216\u6570\u7ec4(\u524d\u540e\u53f0)\u7684\u65b9\u6cd5\u5168\u90e8\u5185\u5bb9\u3002
可以这样转换(兼容性较好的做法):
var msg = '{A:[{name:"阿克苏",spell:"akesu"}]}'; // 字符串类型的 JSON 数据
var json = null;
try {
json = (new Function('return ' + msg))();
} catch(e) {
// 如果 JSON 数据格式有错误,进行错误处理
console.log('数据错误');
}
---------
利用现代浏览器的特性的另一种做法是:
var msg = '{A:[{name:"阿克苏",spell:"akesu"}]}'; // 字符串类型的 JSON 数据
var json = JSON.parse(msg); // 直接利用 JSON 对象进行解析
缺点就是某些浏览器不一定支持
---------
反过来,如果要将对象转换成字符串,可以这样做,见下面代码(适用于现代浏览器,几十年前的IE6什么的运行不起来):
var jsons ={A:[{name:"阿克苏",spell:"akesu"}]}; // JS 对象
var str = JSON.stringify(jsons); // 转化对象为字符串
console.log(str); // 测试 - 输出字符串
一个对象,但如何把文本转为对象呢。使用eval();注意一定要加括号,否则会转换失败
代码如下:
var test='{ colkey: "col", colsinfo: "NameList" }'
把文本转化为对象
var test='{ colkey: "col", colsinfo: "NameList" }'
var obj2=eval("("+test+")");
alert(obj2.colsinfo);
把文本转化为数组
代码如下:
var test='["colkey", "col", "colsinfo","NameList" ]'
var obj2=eval("("+test+")");
alert(obj2.length);
在jsons赋值后加
jsons = eval('(' + jsons + ')');试试看
绛旓細鍦↗avaScript涓紝灏嗗瓧绗︿覆杞寲涓烘暟缁勭殑鎿嶄綔鐩稿綋鐩存帴銆傞鍏堬紝浣犻渶瑕佸畾涔変竴涓寘鍚楀彿鍒嗛殧鐨勫瓧绗︿覆鍙橀噺锛屼緥濡傦細javascriptlet str = "鍏冪礌1,鍏冪礌2,鍏冪礌3";鎺ヤ笅鏉ワ紝鍒╃敤JavaScript鐨勫唴缃柟娉昤split()`灏辫兘瀹屾垚杞崲銆傝繖涓柟娉曢渶瑕佷竴涓弬鏁帮紝杩欓噷灏辨槸浣犳兂瑕佸垎闅斿瓧绗︿覆鐨勫瓧绗︼紝濡傛垜浠殑渚嬪瓙涓紝鍙傛暟灏辨槸閫楀彿`',...
绛旓細鍦↗avaScript涓紝瑙f瀽JSON鏁版嵁骞跺皢鍏杞寲涓鏁扮粍鐨勬搷浣滈潪甯哥洿瑙傦紝涓昏鍊熷姪浜巂eval()`鍑芥暟銆備緥濡傦紝瀵逛簬涓涓寘鍚祵濂瀵硅薄鍜屾暟缁鐨凧SON瀛楃涓`t`锛屾垜浠彲浠ラ氳繃浠ヤ笅姝ラ杩涜澶勭悊锛氳繖娈典唬鐮侀鍏堝畾涔変簡涓涓寘鍚鏉傜粨鏋勭殑JSON瀛楃涓诧紝鐒跺悗浣跨敤`eval()`鍑芥暟灏嗗叾杞寲涓篔avaScript瀵硅薄銆傛帴鐫锛岄氳繃寰幆閬嶅巻鏁扮粍锛屾垜浠...
绛旓細2銆佽鎶婂瓧绗︿覆杞寲鎴愭暟鎹紝鎴戜滑鍙互浣跨敤JS鍐呯疆鐨勬柟娉曪紝split鏂规硶灏辫浜锛岃繖涓柟娉曡娉ㄦ剰鐨勫湴鏂癸紝灏辨槸鍙傛暟锛岀敱浜庡瓧绗︿覆鏄敤閫楀彿闅斿紑鐨勶紝鍙傛暟灏辫緭鍏ラ楀彿灏辫浜嗐3銆佷负浜嗛獙璇佹晥鏋滐紝鍙互鎶婄粨鏋滆緭鍑哄埌鎺у埗鍙颁笂锛屼娇鐢╟onsole.log鏂规硶锛屾妸缁撴灉杈撳嚭灏辫浜嗐傚湪4銆佽剼鏈噷锛岀洿鎺ヨ皟鐢ㄥ垰鎵嶇殑鏂规硶锛屽綋椤甸潰鎵撳紑鍚庯紝灏变細...
绛旓細JSON.parse(jsonString)绗簩绉 eval("("+jsonString+")")绗笁绉 var obj=(function ToJSON(o){ if(typeof(o)=="string")try{return new Function("return "+o)();}catch(e){return null;} })("[{name:'zhangsan',age:'24'},{name:'lisi',age:'30'},{name:'wangwu',age:'16...
绛旓細--- 鍙嶈繃鏉ワ紝濡傛灉瑕佸皢瀵硅薄杞崲鎴愬瓧绗︿覆锛屽彲浠ヨ繖鏍峰仛锛岃涓嬮潰浠g爜锛堥傜敤浜庣幇浠f祻瑙堝櫒锛屽嚑鍗佸勾鍓嶇殑IE6浠涔堢殑杩愯涓嶈捣鏉ワ級锛歷ar jsons ={A:[{name:"闃垮厠鑻",spell:"akesu"}]}; // JS 瀵硅薄var str = JSON.stringify(jsons); // 杞寲瀵硅薄涓哄瓧绗︿覆console.log(str); // 娴嬭瘯 - 杈撳嚭瀛楃涓...
绛旓細JS鏁扮粍涓庡瓧绗︿覆鐨勭浉浜杞崲鏂规硶 涓銆鏁扮粍杞瓧绗︿覆 1. 浣跨敤`join`鏂规硶锛氶氳繃鎸囧畾鍒嗛殧绗灏嗘暟缁鍏冪礌杩炴帴鎴愪竴涓瓧绗︿覆銆傜ず渚嬶細javascript let arr = [1, 2, 3];let str = arr.join; // 浣跨敤閫楀彿浣滀负鍒嗛殧绗 console.log; // 杈撳嚭 "1,2,3"瑙i噴锛 `join`鏂规硶閫氳繃鎸囧畾鐨勫垎闅旂灏嗘暟缁勭殑鎵鏈夊厓绱...
绛旓細浣跨敤js鐨 eval()鏂规硶var code1='"a" + 2'; //琛ㄨ揪寮 varcode2='{a:2}'; //璇彞 alert(eval(code1)); //->'a2'alert(eval(code2)); //->undefined alert(eval('(' + code2 + ')')); //->[object Object]
绛旓細閫氬父閮芥槸鐢╡val()鍑芥暟鏉ヨ繘琛岃浆鎹㈢殑锛屼緥濡傦細var sjson = '{a:1}';var o = eval('('+ sjson + ')');alert(o.a);濡傛灉鏄暟缁勭殑璇濓紝涔熸槸绫讳技鐨勶紝鍦瀛楃涓涓よ竟鍚勫姞涓婁竴涓皬鎷彿锛岀劧鍚庣敤eval()鍑芥暟灏嗗叾杞崲涓烘暟缁锛屽啀璧嬪肩粰鏌愪釜鍙橀噺锛屽氨鍙互鐩存帴浣跨敤浜嗐
绛旓細瀛楃涓鍙樻垚鏁扮粍 灏辨槸鎶婁竴涓釜鐨勫瓧绗﹀叏閮ㄧ瓫閫夊嚭鏉 1 姝e垯琛ㄨ揪寮 var string=鈥渁bcdedef鈥漹ar obj="string".replace(/(.)(?=[^$])/g,"$1,").split(","); //瀛楃涓茶浆鍖栦负鏁扮粍 2 split var obj2 = string.split(""); //瀛楃涓茶浆鍖栦负鏁扮粍 ...
绛旓細JavaScript 鍏佽鏁扮粍涓庡瓧绗︿覆涔嬮棿鐩镐簰杞崲銆傚叾涓 Array 鏂规硶瀵硅薄瀹氫箟浜 3 涓柟娉曪紝鍙互鎶婃暟缁勮浆鎹负瀛楃涓