簡體   English   中英

如何檢查json是否可以解析數據

[英]How to check whether json can parse the data

我正在向服務器發送帶有特殊字符的消息,因為服務器無法處理其特殊字符

</style>
</head>
<body>
    <div id="content">
        <h1>An Error Was Encountered</h1>
        <p>The URI you submitted has disallowed characters.</p> </div>
</body>
</html>

而且我的應用程序因在JSON解析器中引發異常而崩潰

JSON_FAIL(JSON_TEXT("Not JSON!"));
throw std::invalid_argument(EMPTY_STRING2);

是否可以在向服務器發送請求之前檢查消息是否有效。因此我可以向用戶設置警報“無效消息” 任何其他方式來解析錯誤消息(“遇到錯誤”)並顯示解析前發出警報。

由於它引發了異常...我只是將parse方法放在try塊中,並在catch塊中顯示了警報。

如果使用jQuery,則可以使用parseJSON函數測試數據,然后再將其發送到服務器。

var obj = jQuery.parseJSON('{"name":"John"}');<br/>
alert( obj.name === "John" );

http://api.jquery.com/jQuery.parseJSON/

只需嘗試對發送的郵件進行url_encode。 或者使用您自己的算法對該消息進行編碼,該算法將用其十六進制表示形式替換每個消息符號(例如“ Hello!”->“ 48656c6c6f21”),但是消息大小將加倍。 然后,如果您使用自己的編碼方法,則必須在服務器端對消息進行解碼,將自動對url_encoded數據進行解碼。 另外,您必須在嘗試解析響應文本之前檢查它。 只需檢查是否以“”文本開頭。 最后,要測試字符串中無效字符的字符串,請遍歷字符串char並進行測試,它們是否包含在不允許的字符字符串中,例如

array<Byte> strchars = new array<Byte>(255);
str.GetBytes(strchars, 0, str.length);
string dch = "<>@#%^&`\\'\"";
bool invalid = false;
for (i=0;i<str.length;i++) if (dch.IndexOf(strchars[i]) >= 0) {invalid = true; break; }

PS我不是英語母語人士,並且與Objective C並不相同,所以不要對我有太多的判斷:D

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM