jq js json 轉字符串_JS中JSON對象和String之間的互轉及處理技巧

json:JavaScript 對象表示法(javascript Object Notation),其實JSON就是一個javaScript的對象(Object)而已。

如有不清楚JSON,可以去w3cschool了解http://www.w3school.com.cn/json/

1.在Javascript中新建一個字符串(JSON文本)。 var txt = '{ "employees" : [' +

'{ "firstName":"Bill" , "lastName":"Gates" },' +

'{ "firstName":"George" , "lastName":"Bush" },' +

'{ "firstName":"Thomas" , "lastName":"Carter" } ]}';

由于 JSON 語法是 JavaScript 語法的子集,JavaScript 函數 eval() 可用于將 JSON 文本轉換為 JavaScript 對象。

eval() 函數使用的是 JavaScript 編譯器,可解析 JSON 文本,然后生成 JavaScript 對象。必須把文本包圍在括號中,這樣才能避免語法錯誤: var obj = eval ("(" + txt + ")");

注意:eval() 函數可編譯并執行任何 JavaScript 代碼。這隱藏了一個潛在的安全問題。

使用 JSON 解析器將 JSON 轉換為 JavaScript 對象是更安全的做法。JSON 解析器只能識別 JSON 文本,而不會編譯腳本。

在瀏覽器中,這提供了原生的 JSON 支持,而且 JSON 解析器的速度更快。

較新的瀏覽器和最新的 ECMAScript (JavaScript) 標準中均包含了原生的對 JSON 的支持。

字符串轉json對象:JSON.parse(jsonstr);

json對象轉json字符串:JSON.stringify(jsonObj);

JQuery方法:

json字符串轉json對象:jQuery.parseJSON(jsonStr);

通過 JSON 字符串來創建對象

First Name:

Last Name:

var txt = '{"employees":[' +

'{"firstName":"Bill","lastName":"Gates" },' +

'{"firstName":"George","lastName":"Bush" },' +

'{"firstName":"Thomas","lastName":"Carter" }]}';

obj = JSON.parse(txt);

document.getElementById("fname").innerHTML=obj.employees[1].firstName

document.getElementById("lname").innerHTML=obj.employees[1].lastName

2.那么如何遍歷json數組呢?可以把它當成一個普通的javascript對象來處理。

如何遍歷JSON數組

var txt = '[{"firstName":"Bill","lastName":"Gates" },' +

'{"firstName":"George","lastName":"Bush" },' +

'{"firstName":"Thomas","lastName":"Carter" }]';

var arrayJson = JSON.parse(txt);

var html='';

for(var p in arrayJson){

html+=' firstName:'+arrayJson[p].firstName;

html+=' lastName'+arrayJson[p].lastName;

html+='
';

}

document.getElementById("result").innerHTML= html;

ie8(兼容模式),ie7和ie6沒有JSON對象,不過http://www.json.org/js.html提 供了一個json.js,這樣ie8(兼容模式),ie7和ie6就可以支持JSON對象以及其stringify()和parse()方法;你可以在 https://github.com/douglascrockford/JSON-js上獲取到這個js,一般現在用json2.js。

ie8(兼容模式),ie7和ie6可以使用eval()將字符串轉為JSON對象, var c='{"name":"Mike","sex":"女","age":"29"}';

var cToObj=eval("("+c+")");

alert(typeof(cToObj));

以上內容是針對JS中JSON對象和String之間的互轉及處理技巧,希望對大家有所幫助。接下來給大家補充點知識JavaScript中String和JSON之間的轉換。

下面給大家介紹w3c標準的瀏覽器(如火狐、chrome等)是有一個對象JSON(注意是大寫)專門用來處理json的。這個對象有兩個函數:

JSON.parse(text) //用于解析json;

JSON.stringify(object) //用于生成json格式;

早期的IE版本沒有這個對象,可以去json的官方網站自行下載json2.js對付早期IE版本http://www.JSON.org

下面是之前的一些方法,現在可以棄用了

1.舊方法 function strToJson(str){

var json = eval('(' + str + ')');

return json;

}

2.常用 function strToJson(str){

return (new Function("return " + str))();

}

3.IE不支持的方法 function strToJson(str){

return JSON.parse(str);

}

4.jQuery方法 parseJSON: function( data ) {

if ( typeof data !== "string" || !data ) {

return null;

}

data = jQuery.trim( data );

if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")

.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")

.replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {

return window.JSON && window.JSON.parse ?

window.JSON.parse( data ) :

(new Function("return " + data))();

} else {

jQuery.error( "Invalid JSON: " + data );

}

},

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/260390.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260390.shtml
英文地址,請注明出處:http://en.pswp.cn/news/260390.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php中__autoload()方法詳解

原文地址:http://www.php100.com/html/php/lei/2013/0905/5267.html[導讀] PHP在魔術函數__autoload()方法出現以前,如果你要在一個程序文件中實例化100個對象,那么你必須用include或者require包含進來100個類文件,或者你把這100個…

python讀取sql_從python讀取sql的實例方法

從python讀取sql的方法: 1、利用python內置的open函數讀入sql文件; 2、利用第三方庫pymysql中的connect函數連接mysql服務器; 3、利用第三方庫pandas中的read_sql方法讀取傳入的sql文件即可。 python 直接讀取 sql 文件,達到使用 …

我笨,但我不傻

2019獨角獸企業重金招聘Python工程師標準>>> 威哥說:很多朋友給我留言,在學習的過程中如何堅持下去,關于努力和目標,我想談談自己的理解,有不同見解的地方,歡迎留言跟我探討哈。 if(努力苦逼) r…

GNU make manual 翻譯( 一百零四)

繼續翻譯 4.7 Rules without Recipes or Prerequisites If a rule has no prerequisites or recipe, and the target of the rule is a nonexistent file, then make imagines this target to have been updated whenever its rule is run. This implies that all targets dep…

mysql 數字 除以 一萬_騰訊股票接口、和訊網股票接口、新浪股票接口、雪球股票數據、網易股票數據...

騰訊股票接口:大單數據http://stock.finance.qq.com/sstock/list/view/dadan.php?tjs&csz002451&max80&p1&opt10&o0opt10 11 12 13 分別對應成交額大于等于(100萬 200萬 500萬 1000萬)opt1,2,3,4,5,6,7,8 分別對應成交量大于等于(100手 200手 …

asp.net url傳值,彈窗

一,<a>標簽鏈接式傳值 1&#xff0c; <a href"News_list.aspx?ClassID<%#((DataRowView)Container.DataItem)["ClassID"]%>&Editor<%#((DataRowView)Container.DataItem)["Editor"]%>" >傳值</a> 2, <a&g…

windows下python視頻加速調節_Windows下python+ffmpeg實現批量提取、切割視頻中的音頻...

廢話不說&#xff0c;直接上代碼 #遍歷所有mp4文件名->文件名改為字母形式->fffmpeg批量提取音頻、切割音頻->改回中文名 import os import subprocess current os.getcwd() dirs os.listdir(current) for i in dirs: if os.path.splitext(i)[1] ".mp4":…

(轉)千萬別熬夜:身體器官晚上工作時間表一覽

原文連接&#xff1a;http://jiuyinguan.blog.163.com/blog/static/20907903720126801015713/ 任何試圖更改生物鐘的行為&#xff0c;都將給身體留下莫名其妙的疾病&#xff0c;20、30年之后再后悔&#xff0c;已經來不及了。 一、晚上9-11點為免疫系統&#xff08;淋巴&#x…

伯納德?羅森伯格先生參加華為技術2016首屆國際光電連接技術研討會

近日&#xff0c;來自羅森伯格德國總部的CTO首席技術官伯納德羅森伯格先生參加了由華為技術組織的2016首屆國際光電連接技術研討會。本屆研討會華為共邀請了來自全球的約十家著名光電技術領先廠家及合作伙伴參與&#xff0c;共同探討未來數十年的光纖電子技術發展方向并分享最新…

如何使用python效率_Python的5中提高效率的用法

任何編程語言的高級特征通常都是通過大量的使用經驗才發現的。比如你在編寫一個復雜的項目&#xff0c;并在 stackoverflow 上尋找某個問題的答案。然后你突然發現了一個非常優雅的解決方案&#xff0c;它使用了你從不知道的 Python 功能&#xff01;這種學習方式太有趣了&…

記“debug alipay”一事

背景&#xff1a;客戶支付成功&#xff0c;無法返回支付結果 查找原因&#xff0c;追蹤代碼: verified AlipayNotify.verify(params,alipayConfig.sign_type,alipayConfig.partner,alipayConfig.key,alipayConfig.input_charset); if (!verified) { Debug.logError("##…

Xamarin 跨移動端開發系列(01) -- 搭建環境、編譯、調試、部署、運行

&#xff08;本文是基于老版本的VS和Xamarin&#xff0c;而VS2017已經集成了Xamarin&#xff0c;所以&#xff0c;本文已經過時&#xff0c;最新的Xamarin開發介紹請參見 使用 Xamarin開發手機聊天程序 。&#xff09; 如果是.NET開發人員&#xff0c;想學習手機應用開發&#…

內網穿透 無需公網ip_無需端口映射、無需公網IP,60秒實現FTP服務遠程訪問

互聯網的一大特點是實現信息共享&#xff0c;其中文件傳輸是信息共享十分重要的內容之一。科技公司更是離不開它。銷售、庫存、客戶資料等等數據需要隨時共享同步。當需要考慮到文件傳輸安全、傳輸質量、傳輸穩定性、訪問控制等諸多因素時&#xff0c;FTP服務器就成了解決文件傳…

mysql查詢的時候會涉及到鎖_Mysql 查詢 鎖的問題?

以下五種方法可以快速定位全局鎖的位置&#xff0c;僅供參考。方法1&#xff1a;利用 metadata_locks 視圖此方法僅適用于 MySQL 5.7 以上版本&#xff0c;該版本 performance_schema 新增了 metadata_locks&#xff0c;如果上鎖前啟用了元數據鎖的探針(默認是未啟用的)&#x…

Clojure:導入lein項目到IntelliJ IDEA

首先&#xff0c;我們需要先創建一個lein項目&#xff08;廢話。。&#xff09; lein new [項目名稱] 然后生成Maven的pom.xml文件 cd [項目目錄]lein pom 最后&#xff0c;在InteliJ IDEA中選擇導入Maven項目&#xff0c;選擇剛剛生成的pom.xml文件即可。 轉載于:https://www.…

git 工具_Github開源工具分享之自托管GIT服務工具Gogs

介紹Gogs項目旨在構建一種簡單&#xff0c;穩定和可擴展的自托管Git服務&#xff0c;該服務可以通過最輕松的方式進行設置。使用Go語言開發的git自托管服務&#xff0c;部署十分簡單&#xff0c;可以在Go支持的所有平臺(包括Linux&#xff0c;macOS&#xff0c;Windows和ARM)上…

Mariadb 二進制半自動安裝腳本

Mariadb 二進制半自動安裝腳本系統環境&#xff1a;centosx86_64Mariadb版本&#xff1a;mariadb-5.5.36-linux-x86_64#!/bin/bash#auth:code7#description:auto-mariadb#version:1.0groupadd -r -g 306 mysqluseradd -r -g 306 -u 306 mysql#創建mysql的組和用戶tar -xvf mari…

hdu 4414 Finding crosses

http://acm.hdu.edu.cn/showproblem.php?pid4414 簡單枚舉 代碼&#xff1a; #include <iostream> #include <cstdio> #include <cstring> #include <string> #include <queue> #include <vector> #include <algorithm>#define LL …

mysql皮秒轉成年月日時分秒_MySQL performance_schema 中 TIMER_*類字段 的易讀轉換

performance_schema中有很多的表(語句信息表&#xff0c;事務信息表等)記錄執行的SQL的具體信息&#xff0c;執行事務的具體信息&#xff0c;其中都會有一個叫做TIMER_START的字段&#xff0c;這個字段的值易讀性很差&#xff0c;官方文檔說是皮秒&#xff0c;但也沒說怎么轉成…

c++函數相關

1&#xff0c;內連函數 inline 返回值類型 函數名&#xff08;形參列表&#xff09; 普通函數成為內連函數&#xff1a;在普通函數聲明之前加上inline 成員函數成為內連函數&#xff1a;在類中定義的函數全部默認為內連函數&#xff0c;可以顯示加上inline或者不加&#xff1b;…