Как проверить, может ли json анализировать данные - PullRequest
1 голос
/ 23 февраля 2011

Я отправляю сообщение со специальными символами на сервер, так как сервер не может обработать специальные символы, на которые он отвечает

</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 ]

1 голос
/ 25 февраля 2011

Так как это вызывало исключение ... Я просто поместил метод разбора в блок try, а в блоке catch я отобразил предупреждение.

0 голосов
/ 23 февраля 2011

Просто попробуйте url_encode сообщения, которое вы отправляете. Или закодируйте это сообщение своим собственным алгоритмом, который заменит каждый символ сообщения его шестнадцатеричным представлением (например, «Hello!» -> «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

0 голосов
/ 23 февраля 2011

При использовании jQuery вы можете использовать функцию parseJSON для проверки данных перед их отправкой на сервер.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...