一、josn簡易說明
json是一種輕量級的數據交換格式,是一系列格式字符串。在數據交換中,經常會使用到,具有易讀性,輕量級。很多地方會使用到,用處廣泛。如下:(截取的一段json體)
"matchrule": { "tag_id": "2", "sex": "1", "country": "中國", "province": "廣東", "city": "廣州", "client_platform_type": "2", "language": "zh_CN" }
想對json格式有更多了解,查閱相關文檔。
二、josn中傳遞'\r','\n'出現問題
在傳遞'\r','\n'的json的字符串時,遇到了josn格式出錯。如下:
在網絡中抓取傳輸的json體,通過格式化校驗時報錯。認為"RelNotes"的內容是不完整的。沒有找到引號的另一半["]導致解析失敗。實際上是因為在箭頭處遇到了換行符導致解析json失敗。
因此,我想在"RelNotes"中傳遞換行符,但不能導致接收端解析失敗。這個怎么處理???
三、josn中處理帶'\r','\n'換行符
很明顯'\r','\n'是特殊含義的字符,需要進行轉義,需要在該字符前加上轉義符號‘\’。在實際中,我也是這么處理的。問題很快解決掉。
如下是我的處理方式:(這里有隱藏bug)
找到"\r\n",替換"\\r\\n",這邊測試功能是可以的。但是隱藏了一個bug。
四、修改隱藏bug
正常在我們測試是ok的,有同事出差到外地,發現這個功能還是有問題。抓包查看這里面還存在換行符。??? 想這怎么回事,明明處理過的,把"\r\n",替換成"\\r\\n"就可以了。???趕緊百度搜下,哈哈。。。,終於知道了。原來換行符有問題。
如下給出的說明:
最終修改方式:
找到"\r",替換成"\\r","\n",替換成"\\n"。測試問題解決!!!
由於那邊電腦很有可能使用的是MAC,換行是"\r",導致json解析失敗。
五、問題總結
剛才開始解決換行時,沒考慮這么多。就是"\r\n",替換成"\\r\\n"就可以了,當時測試也是沒問題。特殊bug在,特殊情形下出現時,后來解決時才發現,哦,問題原來是這樣啊!也算加深了知識點。