Недопустимый JSON: невидимые символы?

#php #jquery #json

#php #jquery #json

Вопрос:

Я использую JSON для переключения между PHP и Javascript / Jquery… и по какой-то причине данные, которые я извлекаю из таблицы MSSQL, периодически делают мой JSON недействительным. Я не вижу никаких причин, почему это должно быть недопустимым … и тот же набор данных отлично работает для ДРУГИХ записей. Я пробовал разные кодировки символов… Я пробовал использовать htmlentities () и htmlspecialchars (), и записи сертификата по-прежнему делают JSON недействительным.

Вот пример недопустимого JSON

{"ЗАДАЧА": "тест", "ТИП": "Другая проблема", "ПОДТИП": """, "КАТЕГОРИЯ": """, "ЗАПРОС": "Мат Гильберт", "OPENDATE": "8 декабря 2010, 17:12", "ПРИОРИТЕТ": "2 - низкий", "DUEDATE": "", "DESCRIPT": "08.12.2010, 12: 12 по восточному поясному времени - scldom  mgilbert test  n", "СТАТУС" : "","ОТВЕЧАЕТ": ""}

Когда я использую jsonlint… это говорит мне следующее:

синтаксическая ошибка, неожиданный TINVALID в строке 10

Строка 10 — это поле «DESCRIPT».

Я совершенно не понимаю, почему это недопустимый JSON. Пожалуйста, помогите.

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

1. Вы используете json_encode () и не пытаетесь вручную создать json самостоятельно, правильно?

2. htmlentities / htmlspecialchars предназначены для кодирования текста HTML … JSON не имеет абсолютно никакого отношения к HTML — вам нужно сгенерировать правильный текст Javascript, что представляет собой совершенно другую игру.

Ответ №1:

Вы должны избегать этой косой черты scldommgilbert вот так scldom\mgilbert .

Чтобы избавить себя в будущем от проблем с генерацией правильного JSON, вы можете использовать json_encode() функцию PHP.

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

1. Большое вам спасибо за это … к сожалению, сборка PHP, которую я использую (4.3.9), не имеет этой функции, и люди, которые поддерживают среду, не хотят обновляться до 5.x. Я написал свою собственную функцию для fudge, экспортирующую формат данных JSON… Я включу это прямо сейчас!

Ответ №2:

Это:

 scldommgilbert
  

m недопустимо. Измените его на \m