在Java開發(fā)中,經(jīng)常需要將JSON格式的字符串轉(zhuǎn)換為Java對(duì)象,或?qū)ava對(duì)象轉(zhuǎn)換為JSON格式字符串。JSON中的特殊字符如果不進(jìn)行轉(zhuǎn)義,可能會(huì)引起解析錯(cuò)誤,也可能會(huì)導(dǎo)致安全問(wèn)題。此時(shí)需要使用JSON反轉(zhuǎn)義。
// 示例JSON字符串 String jsonStr = "{\r\n" + " \"name\": \"張三\",\r\n" + " \"age\": 18,\r\n" + " \"gender\": \"男\(zhòng)",\r\n" + " \"desc\": \"這是一個(gè)\\\"好人\\\"\"\r\n" + "}"; // 將JSON字符串反轉(zhuǎn)義 String unescapedJsonStr = StringEscapeUtils.unescapeJson(jsonStr); System.out.println(unescapedJsonStr);
在以上代碼中,我們使用Apache Commons Lang庫(kù)中的StringEscapeUtils類的unescapeJson方法,將JSON字符串進(jìn)行反轉(zhuǎn)義。反轉(zhuǎn)義后的JSON字符串如下:
{ "name": "張三", "age": 18, "gender": "男", "desc": "這是一個(gè)\"好人\"" }
可以看到原先被轉(zhuǎn)義的引號(hào)等特殊字符被還原了,反轉(zhuǎn)義后的JSON字符串可以被安全地進(jìn)行解析或生成。