Проблема с новой строкой в тексте — UITextView в sqlite, sqlite в JSON (через NSString), JSON в PHP

#php #iphone #sqlite #uitextview #asihttprequest

#php #iPhone #sqlite #uitextview #asihttprequest

Вопрос:

У меня есть UITextView, который в конечном итоге отправляет текст в базу данных sqlite на iPhone. Позже я буду запрашивать эти данные у sqlite, помещать их в строку JSON и отправлять на сервер (PHP / MySQL) с iPhone с помощью ASIHTTPRequest (using ASIFormDataRequest class).

Существует условие данных, при котором эта отправка в PHP не может быть декодирована должным образом (с использованием json_decode ). Условие данных, похоже, заключается в том, что в тексте, который был введен в sqlite через UITextView, есть новая строка.

Вещи, которые я тестировал:

  • Запишите ту же строку JSON, которую я пытаюсь отправить на сервер, в текстовый файл на iPhone. Возьмите этот текст, скопируйте его в веб-форму (которую я собрал для устранения неполадок), которая отправляет данные в тот же PHP-скрипт, который принимает JSON с iPhone. Это успешно обрабатывается (например, декодируется и записывается в базу данных MySQL).
  • Выпишите ту же строку JSON, которую я пытаюсь отправить на сервер, на консоль (используя NSLog ). Скопируйте текст из консоли и скопируйте его в веб-форму, которая отправляет данные в тот же PHP-скрипт, который принимает JSON с iPhone. Это успешно обрабатывается (например, декодируется и записывается в базу данных MySQL).
  • Удалите новую строку в базе данных sqlite, запустите приложение и отправьте JSON на сервер в соответствии с дизайном, нет problem…it декодирует и записывает в базу данных MySQL.

Я хочу сохранить новую строку в тексте, поскольку это то, что ввел пользователь, и чего они будут ожидать, когда увидят информацию на сервере. Не уверен, как сохранить новую строку и в то же время иметь возможность отправлять данные на сервер без каких-либо проблем.

Спасибо,
Шон

Ответ №1:

Как вы создаете строку JSON?

Новая строка должна быть закодирована в JSON в виде двух символов: n

Комментарии:

1. У меня есть метод, который запрашивает базу данных sqlite и возвращает NSMutableArray из NSMutableDictionary (каждый словарь представляет собой строку полей / значений из результата запроса). Я отправляю это NSMutableArray другому методу, который собирает воедино строку JSON из этого NSMutableArray . Я просто беру то, что когда-либо возвращалось из запроса, создаю JSON и отправляю его.

2. Вы имеете в виду, что вы сами создаете строку JSON вручную? Если это так, то проблема, скорее всего, будет такой, как указано в моем ответе, вам нужно закодировать новую строку в n. Вместо этого вы могли бы рассмотреть возможность использования такой платформы, как code.google.com/p/json-framework для генерации JSON, который будет решать проблемы с кодировкой. Если это не помогло, пожалуйста, добавьте пример недопустимого JSON в свой вопрос.

3. Да, вручную. Я попробую вашу рекомендацию с помощью json-framework. Спасибо!

4. В качестве продолжения я использовал рекомендованный json-framework, и он решил мои проблемы с кодировкой новой строки. Еще раз спасибо.