導航:首頁 > 編程語言 > json特殊字元java

json特殊字元java

發布時間:2022-02-28 05:35:13

❶ 如何處理JSON中的特殊字元

JSON 是適用於 Ajax 應用程序的一種有效格式,原因是它使 javaScript 對象和字元串值之間得以快速轉換。由於 Ajax
應用程序非常適合將純文本發送給伺服器端程序並對應地接收純文本,相比不能生成文本的 API,能生成文本的 API 自然更可取;而且,JSON 讓您能夠處理本地
JavaScript 對象,而無需為如何表示這些對象多費心思。

XML 也可以提供文本方面的類似益處,但用於將 JavaScript 對象轉換成 XML 的幾個現有 API 沒有 JSON API
成熟;有時,您必須在創建和處理 JavaScript 對象時格外謹慎以確保所進行的處理能與所選用的 XML 會話 API 協作。但對於
JSON,情況就大不相同:它能處理幾乎所有可能的對象類型,並會返回給您一個非常好的 JSON 數據表示。 因此,JSON 的最大價值在於可以將
JavaScript 真的作為 JavaScript 而非數據格式語言進行處理。

您所學到的所有有關使用 JavaScript 對象的技巧都可以應用到代碼中,而無需為如何將這些對象轉變成文本而多費心思。

1. 回車問題

JSON傳值的時候,如果有回車符就會掛的。我們可以使用正則來去掉回車符:

view
source
print?

1
$str = preg_replace("'([\r\n])[\s]+'", "", $str);

2

3
// 不用正則

4
$str = str_replace("\n","",$str);

轉出來的字元串就沒有回車符的困擾了。

順便記錄一個php過濾腳本:

view
source
print?

01
<?php

02
// $document 應包含一個 HTML 文檔。

03
// 本例將去掉 HTML 標記,javascript 代碼

04
// 和空白字元。還會將一些通用的

05
// HTML 實體轉換成相應的文本。

06

07
$search = array ("'<script[^>]*?>.*?</script>'si", // 去掉 javascript

08
"'<[\/\!]*?[^<>]*?>'si", // 去掉 HTML 標記

09
"'([\r\n])[\s]+'", // 去掉空白字元

10
"'&(quot|#34);'i", // 替換 HTML 實體

11
"'&(amp|#38);'i",

12
"'&(lt|#60);'i",

13
"'&(gt|#62);'i",

14
"'&(nbsp|#160);'i",

15
"'&(iexcl|#161);'i",

16
"'&(cent|#162);'i",

17
"'&(pound|#163);'i",

18
"'&(|#169);'i",

19
"'&#(\d+);'e"); // 作為 PHP 代碼運行

20

21
$replace = array ("",

22
"",

23
"\\1",

24
"\"",

25
"&",

26
"<",

27
">",

28
" ",

29
chr(161),

30
chr(162),

31
chr(163),

32
chr(169),

33
"chr(\\1)");

34

35
$text = preg_replace ($search, $replace, $document);

36
?>

2. HTML特殊字元

從伺服器端以JSON格式將數據傳遞到客戶端後,通過JS顯示在HTML頁面時,有一些特殊字元不能直接顯示,如後台傳遞過來的是
'<b>msg</b> #' 通過JS顯示在HTML頁面中時,顯示成了 msg # ,並不是msg
#,這是由於<與>之間的內容看作是HTML標簽了,而以&開頭的 與#為HTML實體,所以顯示不正常。

解決辦法很簡單,在JS將其渲染到HTML頁面前轉換一下即可:

view
source
print?

01
<script type="text/javascript">

02
var str = '<b>msg</b> #';

03
document.all.div1.innerHTML='<pre>'+str+'</pre>';

04

05
//js中的字元串正常顯示在HTML頁面中

06
String.prototype.displayHtml= function(){

07
//將字元串轉換成數組

08
var
strArr = this.split('');

09
//HTML頁面特殊字元顯示,空格本質不是,但多個空格時瀏覽器默認只顯示一個,所以替換

10
var
htmlChar="&<>";

11
for(var
i = 0; i< str.length;i++){

12
//查找是否含有特殊的HTML字元

13
if(htmlChar.indexOf(str.charAt(i)) !=-1){

14
//如果存在,則將它們轉換成對應的HTML實體

15
switch
(str.charAt(i)) {

16
case
'<':

17
strArr.splice(i,1,'<');

18
break;

19
case
'>':

20
strArr.splice(i,1,'>');

21
break;

22
case
'&':

23
strArr.splice(i,1,'&');

24
}

25
}

26
}

27
return
strArr.join('');

28
}

29
alert(str.displayHtml());

30
document.all.div2.innerHTML=str.displayHtml();

31
</script>

3. escape()函數

該函數可以處理空格、斜線和其他任何可能影響瀏覽器的內容,並將它們轉換成 Web 可用字元(比如,空格會被轉換成
%20,瀏覽器並不會將其視為空格處理,而是不做更改,將其直接傳遞到伺服器)。之後,伺服器會(通常自動)再把它們轉換回它們傳輸後的本來 「面目」。

view
source
print?

1
var url = "nowamagic.php?people="
+ escape(people.toJSONString());

2
request.open("GET", url, true);

3
request.onreadystatechange = updatePage;

4
request.send(null);

這種做法的缺點有兩個: 在使用 GET 請求發送大塊數據時,對 URL 字元串有長度限制。雖然這個限制很寬泛,但對象的 JSON
字元串表示的長度可能超出您的想像,尤其是在使用極其復雜的對象時更是如此。在跨網路以純文本發送所有數據的時候,發送數據面臨的不安全性超出了您的處理能力。

簡言之,以上是 GET 請求的兩個限制,而不是簡單的兩個與 JSON
數據相關的事情。在想要發送用戶名和姓之外的更多內容,比如表單中的選擇時,二者可能會需要多加註意。若要處理任何機密或極長的內容,可以使用 POST 請求。

4. 引號問題

JSON中如果包含引號或雙引號,會破壞JSON的格式。有兩種方法可以解決。

在入庫的時候可以使用addslashes()函數處理一下字元串,給引號前加上斜杠。被改的字元包括單引號 (')、雙引號 (")、反斜線 backslash
(\) 以及空字元NULL。

view
source
print?

1
$text = addslashes($text);

JavaScript的話,可以這樣:

view
source
print?

1
function valueReplace(v){

2
v=v.toString().replace(new
RegExp('(["\"])', 'g'),"\\\"");

3
return
v;

4
}

5
var eValue = encodeURI($.trim(valueReplace(e.value)))

❷ json格式如何讀取有特殊字元的數據!內詳!

json格式是{"a":"b","c":"d"},所以你從資料庫讀出的值如果包含{,",逗號,這類構造json格式的特殊字元,那麼就容易破壞json數據的格式,自然無法正確讀出,用replace方法替換掉特殊字元,在特殊字元前加\。
例如:String s = "a:b,c";s.replace(":","\:").replace(",","\,");

❸ java Json 串中的轉義字元

帶有轉義字元的java Json串 如下

{"type":"ONLINE_SHIPS","message":"{"currentTime":1400077615368,"direction":0,"id":1,"latitude":29.5506,"longitude":106.6466}"}

解析時先把它轉化成字元串就可以了 如下

JSONObjectjsonObject=newJSONObject(jsonstr);
Stringjsonstrtemp=jsonObject.optString("message");

解析獲取json字元串里的值時,建議用jsonObject.optString的方式,它相較於傳統的

jsonObject.getString方式 在得不到你想要的值時候返回空字元串, 而getString的方式

會拋出異常

❹ json數據中欄位有特殊字元怎麼解決

這個沒法解決,只能靠轉義 「」,JSON最大的缺點就是這個,所以在開發的過程中,要注意特殊字元,在強類型語言中,第三方包會自己解決這些問題。比如Java就會自動反轉義。

最好的解決方式還是在開發過程中注意一點。

推薦個JSON在線解析工具給您。

http://www.sojson.com

❺ json字元串中需要轉義的字元有哪些

題主記住一點,但凡會造成字元串被截斷、未關閉及包裹情況的字元,就必須進行轉義。

如「你好啊「小傢伙」」,「小傢伙」外部的雙引號和最外部的雙引號造成了包裹;

如「你好啊「小傢伙」,中間的雙引號未關閉且和前後兩個引號造成了混亂;

如果想進行在線調試和校驗的話 可以訪問網頁鏈接進行嘗試

❻ java後台怎麼解析含有特殊字元的json字元串,如含有逗號,冒號等特殊字元

這個你不需要理會,json的組裝方式就是這樣的,你只需要按鈕普通的取值方式從它裡面取就行了如:把傳過的的對象當成是map的話,就int num = (Integer) map.get("s0"); //413
String m1 = map.get("m1").toString(); //"sdfs,123,sdf,sdfsdf,sdfsdf"

❼ json特殊字元有哪些

1:引號 ,如果是使用單引號,來括值的話,那String 中 ' 單引號為特殊字元
2:正斜杠,反斜杠,換行符號等。另外,必須用 (") 而非 (') 表示字元串

❽ java JSONObject 字元轉義問題

你把資料庫的日期類型欄位改成字元串類型的。

❾ 如何處理JSON中的特殊字元

1. 回車問題
JSON傳值的時候,如果有回車符就會掛的。我們可以使用正則來去掉回車符:
1 $str = preg_replace("'([\r\n])[\s]+'", "", $str);
2
3 // 不用正則
4 $str = str_replace("\n","",$str);
轉出來的字元串就沒有回車符的困擾了。
順便記錄一個PHP過濾腳本:
01 <?php
02 // $document 應包含一個 HTML 文檔。
03 // 本例將去掉 HTML 標記,javascript 代碼
04 // 和空白字元。還會將一些通用的
05 // HTML 實體轉換成相應的文本。

❿ 如何處理JSON中的特殊字元

JSON 是適用於 Ajax 應用程序的一種有效格式,原因是它使 JavaScript 對象和字元串值之間得以快速轉換。由於 Ajax應用程序非常適合將純文本發送給伺服器端程序並對應地接收純文本,相比不能生成文本的 API,能生成文本的 API 自然更可取;而且,JSON 讓您能夠處理本地
JavaScript 對象,而無需為如何表示這些對象多費心思。

XML 也可以提供文本方面的類似益處,但用於將 JavaScript 對象轉換成 XML 的幾個現有 API 沒有 JSON API
成熟;有時,您必須在創建和處理 JavaScript 對象時格外謹慎以確保所進行的處理能與所選用的 XML 會話 API 協作。但對於
JSON,情況就大不相同:它能處理幾乎所有可能的對象類型,並會返回給您一個非常好的 JSON 數據表示。 因此,JSON 的最大價值在於可以將
JavaScript 真的作為 JavaScript 而非數據格式語言進行處理。

您所學到的所有有關使用 JavaScript 對象的技巧都可以應用到代碼中,而無需為如何將這些對象轉變成文本而多費心思。

1. 回車問題

JSON傳值的時候,如果有回車符就會掛的。我們可以使用正則來去掉回車符:

view
source
print?

1
$str = preg_replace("'([\r\n])[\s]+'", "", $str);

2

3
// 不用正則

4
$str = str_replace("\n","",$str);

轉出來的字元串就沒有回車符的困擾了。

順便記錄一個PHP過濾腳本:

view
source
print?

01
<?php

02
// $document 應包含一個 HTML 文檔。

03
// 本例將去掉 HTML 標記,javascript 代碼

04
// 和空白字元。還會將一些通用的

05
// HTML 實體轉換成相應的文本。

06

07
$search = array ("'<script[^>]*?>.*?</script>'si", // 去掉 javascript

08
"'<[\/\!]*?[^<>]*?>'si", // 去掉 HTML 標記

09
"'([\r\n])[\s]+'", // 去掉空白字元

10
"'&(quot|#34);'i", // 替換 HTML 實體

11
"'&(amp|#38);'i",

12
"'&(lt|#60);'i",

13
"'&(gt|#62);'i",

14
"'&(nbsp|#160);'i",

15
"'&(iexcl|#161);'i",

16
"'&(cent|#162);'i",

17
"'&(pound|#163);'i",

18
"'&(|#169);'i",

19
"'&#(\d+);'e"); // 作為 PHP 代碼運行

20

21
$replace = array ("",

22
"",

23
"\\1",

24
"\"",

25
"&",

26
"<",

27
">",

28
" ",

29
chr(161),

30
chr(162),

31
chr(163),

32
chr(169),

33
"chr(\\1)");

34

35
$text = preg_replace ($search, $replace, $document);

36
?>

2. HTML特殊字元

從伺服器端以JSON格式將數據傳遞到客戶端後,通過JS顯示在HTML頁面時,有一些特殊字元不能直接顯示,如後台傳遞過來的是
'<b>msg</b> #' 通過JS顯示在HTML頁面中時,顯示成了 msg # ,並不是msg
#,這是由於<與>之間的內容看作是HTML標簽了,而以&開頭的 與#為HTML實體,所以顯示不正常。

解決辦法很簡單,在JS將其渲染到HTML頁面前轉換一下即可:

view
source
print?

01
<script type="text/javascript">

02
var str = '<b>msg</b> #';

03
document.all.div1.innerHTML='<pre>'+str+'</pre>';

04

05
//js中的字元串正常顯示在HTML頁面中

06
String.prototype.displayHtml= function(){

07
//將字元串轉換成數組

08
var
strArr = this.split('');

09
//HTML頁面特殊字元顯示,空格本質不是,但多個空格時瀏覽器默認只顯示一個,所以替換

10
var
htmlChar="&<>";

11
for(var
i = 0; i< str.length;i++){

12
//查找是否含有特殊的HTML字元

13
if(htmlChar.indexOf(str.charAt(i)) !=-1){

14
//如果存在,則將它們轉換成對應的HTML實體

15
switch
(str.charAt(i)) {

16
case
'<':

17
strArr.splice(i,1,'<');

18
break;

19
case
'>':

20
strArr.splice(i,1,'>');

21
break;

22
case
'&':

23
strArr.splice(i,1,'&');

24
}

25
}

26
}

27
return
strArr.join('');

28
}

29
alert(str.displayHtml());

30
document.all.div2.innerHTML=str.displayHtml();

31
</script>

3. escape()函數

該函數可以處理空格、斜線和其他任何可能影響瀏覽器的內容,並將它們轉換成 Web 可用字元(比如,空格會被轉換成
%20,瀏覽器並不會將其視為空格處理,而是不做更改,將其直接傳遞到伺服器)。之後,伺服器會(通常自動)再把它們轉換回它們傳輸後的本來 「面目」。

view
source
print?

1
var url = "nowamagic.php?people="
+ escape(people.toJSONString());

2
request.open("GET", url, true);

3
request.onreadystatechange = updatePage;

4
request.send(null);

這種做法的缺點有兩個: 在使用 GET 請求發送大塊數據時,對 URL 字元串有長度限制。雖然這個限制很寬泛,但對象的 JSON
字元串表示的長度可能超出您的想像,尤其是在使用極其復雜的對象時更是如此。在跨網路以純文本發送所有數據的時候,發送數據面臨的不安全性超出了您的處理能力。

簡言之,以上是 GET 請求的兩個限制,而不是簡單的兩個與 JSON
數據相關的事情。在想要發送用戶名和姓之外的更多內容,比如表單中的選擇時,二者可能會需要多加註意。若要處理任何機密或極長的內容,可以使用 POST 請求。

4. 引號問題

JSON中如果包含引號或雙引號,會破壞JSON的格式。有兩種方法可以解決。

在入庫的時候可以使用addslashes()函數處理一下字元串,給引號前加上斜杠。被改的字元包括單引號 (')、雙引號 (")、反斜線 backslash
(\) 以及空字元NULL。

view
source
print?

1
$text = addslashes($text);

JavaScript的話,可以這樣:

view
source
print?

1
function valueReplace(v){

2
v=v.toString().replace(new
RegExp('(["\"])', 'g'),"\\\"");

3
return
v;

4
}

5
var eValue = encodeURI($.trim(valueReplace(e.value)))

閱讀全文

與json特殊字元java相關的資料

熱點內容
優信二手車解壓後過戶 瀏覽:63
Windows常用c編譯器 瀏覽:780
關於改善國家網路安全的行政命令 瀏覽:835
安卓如何下載網易荒野pc服 瀏覽:656
javainetaddress 瀏覽:106
蘋果4s固件下載完了怎麼解壓 瀏覽:1005
命令zpa 瀏覽:288
python編譯器小程序 瀏覽:946
在app上看視頻怎麼光線調暗 瀏覽:542
可以中文解壓的解壓軟體 瀏覽:595
安卓卸載組件應用怎麼安裝 瀏覽:915
使用面向對象編程的方式 瀏覽:342
程序員項目經理的年終總結範文 瀏覽:932
內衣的加密設計用來幹嘛的 瀏覽:435
淮安數據加密 瀏覽:295
魔高一丈指標源碼 瀏覽:984
松下php研究所 瀏覽:171
c回調java 瀏覽:403
夢幻端游長安地圖互通源碼 瀏覽:747
電腦本地文件如何上傳伺服器 瀏覽:315