在web開發(fā)中,常常需要通過get請(qǐng)求獲取json數(shù)據(jù)。然而,在實(shí)際開發(fā)中我們可能會(huì)遇到一些問題,那就是get請(qǐng)求返回的json數(shù)據(jù)中,括號(hào)沒有轉(zhuǎn)義。
{ "id": 123, "name": "apple", "price": 3.14, "description": "This is a fresh apple (not include parenthesis)" }
正常情況下,返回的json數(shù)據(jù)應(yīng)該為:
{ "id": 123, "name": "apple", "price": 3.14, "description": "This is a fresh apple (not include parenthesis\)" }
可以看到,原本括號(hào)中的內(nèi)容應(yīng)該被轉(zhuǎn)義,但是實(shí)際返回的json數(shù)據(jù)中,括號(hào)并沒有進(jìn)行轉(zhuǎn)義,這就導(dǎo)致了我們?cè)谑褂眠@個(gè)json數(shù)據(jù)時(shí)可能會(huì)遇到許多問題。
解決辦法:
1.在請(qǐng)求參數(shù)中對(duì)括號(hào)進(jìn)行編碼。以"( )"為例,將左括號(hào)編碼為%28,右括號(hào)編碼為%29,請(qǐng)求參數(shù)應(yīng)該為:http://www.example.com/data?filter=(id=123%28
2.在后端使用json序列化時(shí)進(jìn)行轉(zhuǎn)義。將括號(hào)和其他需要轉(zhuǎn)義的字符,例如斜杠、引號(hào)等進(jìn)行轉(zhuǎn)義,在響應(yīng)時(shí)返回轉(zhuǎn)義后的json數(shù)據(jù)。
以上兩種方法都可以解決括號(hào)沒有轉(zhuǎn)義的問題,具體使用方法需要根據(jù)實(shí)際情況進(jìn)行選擇。