JSON 數(shù)據(jù)格式介紹
更新時(shí)間:2012年01月13日 22:40:24 作者:
這篇文章講的比較深入,所以不用我畫蛇添足了,只是下面這段代碼很好的演示了JSON如何處理字符串?dāng)?shù)據(jù)
1,基礎(chǔ)
這篇文章講的比較深入,所以不用我畫蛇添足了,只是下面這段代碼很好的演示了JSON如何處理字符串?dāng)?shù)據(jù),保存下來(lái)備查:
zt from:https://www.ibm.com/developerworks/cn/web/wa-lo-json/
將 String 對(duì)象編碼為 JSON 格式時(shí),只需處理好特殊字符即可。另外,必須用 (") 而非 (') 表示字符串:
static String string2Json(String s) {
StringBuilder sb = new StringBuilder(s.length()+20);
sb.append('\"');
for (int i=0; i<s.length(); i++) {
char c = s.charAt(i);
switch (c) {
case '\"':
sb.append("\\\"");
break;
case '\\':
sb.append("\\\\");
break;
case '/':
sb.append("\\/");
break;
case '\b':
sb.append("\\b");
break;
case '\f':
sb.append("\\f");
break;
case '\n':
sb.append("\\n");
break;
case '\r':
sb.append("\\r");
break;
case '\t':
sb.append("\\t");
break;
default:
sb.append(c);
}
}
sb.append('\"');
return sb.toString();
}
2,在PHP中的應(yīng)用。
PHP中使用json_encode和json_decode來(lái)進(jìn)行JSON封裝和拆裝。
封裝string類型數(shù)據(jù):json_encode在輸出結(jié)果中,會(huì)在源字符串兩端加上("),如對(duì)象內(nèi)容是(abc),結(jié)果是("abc”)
封裝stdClass對(duì)象類型數(shù)據(jù):比如有個(gè)"value”成員內(nèi)容是字符串,結(jié)果是:{"value":"\u5e7f\u4e1c\u4f53\u80b2,CCTV5"}
3,為什么要寫這個(gè)。
ZenTaoPHP框架中,請(qǐng)求類型如果是“json”,輸出結(jié)果會(huì)以JSON格式封裝,但在對(duì)輸出信息進(jìn)行分析時(shí),發(fā)現(xiàn)并非標(biāo)準(zhǔn)的JSON格式。
深究后,發(fā)現(xiàn)ZenTaoPHP對(duì)一部分?jǐn)?shù)據(jù)進(jìn)行了二次JSON封裝,輸出類似:"{\"value\":\"\\u5e7f\\u4e1c\\u4f53\"}" 這樣的結(jié)果。
這篇文章講的比較深入,所以不用我畫蛇添足了,只是下面這段代碼很好的演示了JSON如何處理字符串?dāng)?shù)據(jù),保存下來(lái)備查:
zt from:https://www.ibm.com/developerworks/cn/web/wa-lo-json/
將 String 對(duì)象編碼為 JSON 格式時(shí),只需處理好特殊字符即可。另外,必須用 (") 而非 (') 表示字符串:
復(fù)制代碼 代碼如下:
static String string2Json(String s) {
StringBuilder sb = new StringBuilder(s.length()+20);
sb.append('\"');
for (int i=0; i<s.length(); i++) {
char c = s.charAt(i);
switch (c) {
case '\"':
sb.append("\\\"");
break;
case '\\':
sb.append("\\\\");
break;
case '/':
sb.append("\\/");
break;
case '\b':
sb.append("\\b");
break;
case '\f':
sb.append("\\f");
break;
case '\n':
sb.append("\\n");
break;
case '\r':
sb.append("\\r");
break;
case '\t':
sb.append("\\t");
break;
default:
sb.append(c);
}
}
sb.append('\"');
return sb.toString();
}
2,在PHP中的應(yīng)用。
PHP中使用json_encode和json_decode來(lái)進(jìn)行JSON封裝和拆裝。
封裝string類型數(shù)據(jù):json_encode在輸出結(jié)果中,會(huì)在源字符串兩端加上("),如對(duì)象內(nèi)容是(abc),結(jié)果是("abc”)
封裝stdClass對(duì)象類型數(shù)據(jù):比如有個(gè)"value”成員內(nèi)容是字符串,結(jié)果是:{"value":"\u5e7f\u4e1c\u4f53\u80b2,CCTV5"}
3,為什么要寫這個(gè)。
ZenTaoPHP框架中,請(qǐng)求類型如果是“json”,輸出結(jié)果會(huì)以JSON格式封裝,但在對(duì)輸出信息進(jìn)行分析時(shí),發(fā)現(xiàn)并非標(biāo)準(zhǔn)的JSON格式。
深究后,發(fā)現(xiàn)ZenTaoPHP對(duì)一部分?jǐn)?shù)據(jù)進(jìn)行了二次JSON封裝,輸出類似:"{\"value\":\"\\u5e7f\\u4e1c\\u4f53\"}" 這樣的結(jié)果。
相關(guān)文章
JS中JSON.parse(JSON.stringify())實(shí)現(xiàn)深拷貝
深拷貝就是完全拷貝一份新的對(duì)象,本文主要介紹了JS中JSON.parse(JSON.stringify())實(shí)現(xiàn)深拷貝,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
json的前臺(tái)操作和后臺(tái)操作實(shí)現(xiàn)代碼
通常情況下,json的在項(xiàng)目中的應(yīng)用都是在后臺(tái)把數(shù)據(jù)傳到前臺(tái),然后前臺(tái)再獲取json中的數(shù)據(jù).2012-01-01
Jquery+asp.net后臺(tái)數(shù)據(jù)傳到前臺(tái)js進(jìn)行解析的方法
我們經(jīng)常用jquery讀取后臺(tái)數(shù)據(jù),后臺(tái)返回?cái)?shù)據(jù)。后臺(tái)數(shù)據(jù)格式就有很多了,但是js里面沒(méi)有什么類型之分2014-05-05
javascript 循環(huán)讀取JSON數(shù)據(jù)的代碼
服務(wù)端向客戶端返回了一串JSON格式的數(shù)據(jù)。在有些時(shí)候,因?yàn)槟承┨厥獾脑蛭覀儾恢涝嫉膋ey值,因此我們此時(shí)無(wú)法象正常一樣通過(guò)key值,來(lái)獲取value值。這時(shí)我們必須循環(huán)讀取JSON對(duì)象數(shù)據(jù)。廢話少說(shuō),來(lái)看例子。2010-07-07
將List對(duì)象列表轉(zhuǎn)換成JSON格式的類實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇將List對(duì)象列表轉(zhuǎn)換成JSON格式的類實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-07-07

