如何检查json是否可以解析数据

时间:2011-02-23 07:00:47

标签: iphone json

我正在向服务器发送带有特殊字符的消息,因为服务器无法处理它正在回复的特殊字符

</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);

在向服务器发送请求之前是否可以检查消息是否有效。所以我可以向用户提出警告“无效消息”以解析错误消息(“遇到错误”)并在解析之前显示警报。

3 个答案:

答案 0 :(得分:1)

因为它抛出异常......我只是将parse方法放在try块中,而在catch块中我显示了一个警告。

答案 1 :(得分:0)

如果使用jQuery,您可以使用parseJSON函数在数据发送到服务器之前对其进行测试。

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

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

答案 2 :(得分:0)

尝试对您发送的邮件进行url_encode。或者使用您自己的算法对该消息进行编码,该算法将使用其十六进制表示替换每个消息符号(如“Hello!” - &gt;“48656c6c6f21”),但邮件大小将加倍。 然后,如果您使用自己的编码方法,则必须在服务器端解码消息,url_encoded数据将自动解码。 此外,您必须在尝试解析之前检查响应文本。只需检查它是否以“”文本开头。 最后,通过字符串字符测试无效字符的字符串循环和测试,它们是否包含在不允许的字符串中,如同

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; }

P.S。我不是母语为英语的人,而且对于Objective C来说并不常见,所以不要过多地评价我:D