json中含有換行符'\r','\n'的處理


一、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在,特殊情形下出現時,后來解決時才發現,哦,問題原來是這樣啊!也算加深了知識點。

閱讀原文


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM