json字符串是什么 json格式是字符串嗎
大家好,今天小編來為大家解答以下的問題,關(guān)于json字符串是什么,json格式是字符串嗎這個很多人還不知道,現(xiàn)在讓我們一起來看看吧!js怎么將string轉(zhuǎn)換為json...
大家好,今天小編來為大家解答以下的問題,關(guān)于json字符串是什么,json格式是字符串嗎這個很多人還不知道,現(xiàn)在讓我們一起來看看吧!
js怎么將string轉(zhuǎn)換為json對象
例如:
JSON字符串:
varstr1='{"name":"cxh","sex":"man"}';
JSON對象:
varstr2={"name":"cxh","sex":"man"};
一、JSON字符串轉(zhuǎn)換為JSON對象
要使用上面的str1,必須使用下面的方法先轉(zhuǎn)化為JSON對象:
//由JSON字符串轉(zhuǎn)換為JSON對象
varobj=eval('('+str+')');
或者
varobj=str.parseJSON();//由JSON字符串轉(zhuǎn)換為JSON對象
或者
varobj=JSON.parse(str);//由JSON字符串轉(zhuǎn)換為JSON對象
然后,就可以這樣讀取:
Alert(obj.name);
Alert(obj.sex);
特別注意:如果obj本來就是一個JSON對象,那么使用eval()函數(shù)轉(zhuǎn)換后(哪怕是多次轉(zhuǎn)換)還是JSON對象,但是使用parseJSON()函數(shù)處理后會有問題(拋出語法異常)。
PHP如何判斷字符串是否標(biāo)準(zhǔn)JSON,有什么好辦法
引言
在MYSQL5.6及以下沒有JSON這個字段類型的時候,我們還只能用字符串存儲數(shù)組,對象,這些結(jié)構(gòu)數(shù)據(jù);甚至有直接將序列化的對象存庫的,都是無奈之舉。
編程中也時不時對接口進行json_encode/json_decode。那么如果所得的字符串不是標(biāo)準(zhǔn)的格式,有什么辦法快速檢測嗎?
本文就來說一說。
學(xué)習(xí)時間最快的辦法,還是使用PHP內(nèi)置的json_decode函數(shù),對于此函數(shù)的參數(shù)和返回值,我們需要認真地分析。
該函數(shù)接受一個JSON編碼的字符串并且把它轉(zhuǎn)換為PHP變量。函數(shù)結(jié)構(gòu):
mixedjson_decode(string$json[,bool$assoc=false[,int$depth=512[,int$options=0]]])
除了第一個字符串類型的$json必填之外,其他都是選填。如果我們定制功能,需要后面的參數(shù)也指定。比如,解碼的字符串解析為關(guān)聯(lián)數(shù)組,那么就指定$assoc=true。
考慮到兼容性的要求,$json傳入的字符串,必須是UTF-8編碼格式。
我們試著編寫一個助手函數(shù),用于判斷字符串是否標(biāo)準(zhǔn)的json格式:
functionisJson($string){json_decode($string);return(json_last_error()==JSON_ERROR_NONE);}
這個方法使用了2個函數(shù),和1個常量。其中json_decode是對字符串解碼暫且不說。json_last_error函數(shù),如果有返回值,則是JSON編碼解碼時最后發(fā)生的錯誤。
JSON_ERROR_NONE是無錯誤,=0。該句判斷沒有錯誤則是標(biāo)準(zhǔn)格式,返回true;否則返回false。
深入學(xué)習(xí)其實上面的代碼對于json加解碼過程中的錯誤判斷還是比較粗糙的。有一位小哥不嫌繁瑣,手動拼裝了詳細的錯誤處理函數(shù),非常實用。
使用上述函數(shù)進行測試:
$json='[{"user_id":13,"username":"stack"},{"user_id":14,"username":"over"}]';$output=json_validate($json);print_r($output);
輸出內(nèi)容如下:
這是正常的情況,json格式完全正確。我們再測試一個不是規(guī)范格式的字符串。
$json='{background-color:yellow;color:#000;padding:10px;width:650px;}';$output=json_validate($json);print_r($output);
輸出錯誤信息:
Syntaxerror,malformedJSON.
萬能的正則跟字符串打交道,正則表達式幾乎可以做一切你想要的結(jié)果。json字符串也一樣,據(jù)文檔所說,使用正則表達式判斷JSON格式,穩(wěn)定有效,而且速度還很快。
下面這個正則表達式您拿小本本記好了,一模一樣地抄下來用就可以了。
return!preg_match('/[^,:{}\\[\\]0-9.\\-+Eaeflnr-u\\n\\r\\t]/',preg_replace('/"(\\.|[^"\\\\])*"/','',$json_string));
寫在最后如果考慮程序的可讀性,和可維護性,使用json_decode函數(shù)的判斷無疑更直觀,大家也更熟悉。然而正則表達式所體現(xiàn)出的高效也是不容小覷的。
Happycoding:_)
我是@程序員小助手,持續(xù)分享編程知識,歡迎關(guān)注。
jsonobject是什么程序語言
JSONObject不是一種程序語言,而是一個表示JSON對象的類庫,可以在多種編程語言中使用。JSON(JavaScriptObjectNotation)是一種輕量級、易于閱讀和編寫的數(shù)據(jù)交換格式,廣泛用于Web應(yīng)用程序中。JSONObject則是一種能夠處理JSON格式數(shù)據(jù)并提供相關(guān)功能的類庫,支持各種編程語言,如Java,C#,Python,PHP等。
因為JSON數(shù)據(jù)格式本身可以被多種編程語言解析和讀取,在Web應(yīng)用程序中,前端JavaScript代碼通常會將JSON格式的數(shù)據(jù)從服務(wù)器獲取,并用于呈現(xiàn)動態(tài)內(nèi)容或組成用戶界面。同時,后端編程語言(如Java,C#,Python)也經(jīng)常用JSON格式來處理數(shù)據(jù)請求和響應(yīng),在這里,JSONObject類庫就成為了一個非常有用的工具,它可以方便地解析JSON格式數(shù)據(jù),提取其中的字段和數(shù)據(jù),比如讀取一個JSON對象的屬性,或者遍歷一個JSON數(shù)組等。
怎么把json對象轉(zhuǎn)換為json字符串
用Gson轉(zhuǎn)換就行了,需要下載jar包
例子:
Personperson=newPerson();Gsongson=newGson();Stringjson=gson.toJson(person);
json字符串可以壓縮么
這個和你的客戶端處理相關(guān)聯(lián),如果服務(wù)端對標(biāo)準(zhǔn)json串進行了修改和壓縮,那你客戶端的處理需要解壓和對應(yīng)的處理,這樣的話標(biāo)準(zhǔn)的庫可能直接使用會有問題,需要進行客戶端解析庫的定制 如果客戶端服務(wù)端都是你定制的序列化和反序列化,那你可以任意控制這個格式,修改json串,如果要和標(biāo)準(zhǔn)兼容最好不要這樣定制,如果你是想減少網(wǎng)絡(luò)流量,建議使用web服務(wù)的http壓縮
OK,本文到此結(jié)束,希望對大家有所幫助。
本文鏈接:http://xinin56.com/ruanjian/818.html