2013-07-22 5 views
0

Я попытался отправить несколько писем на мой PHP сервер как формат JSON, но когда я проверить, что JSON он показывает ошибкуПочему этот JSON недействителен?

{"function":"contacts", "parameters": {"emails": "(
    "[email protected]", 
    "[email protected]", 
    "[email protected]" 
)","user_id": "90"},"token":""} 

Ошибка показывает, как -

Parse error on line 4: 
    ...{  "emails": "(  "[email protected] 
    ----------------------^ 
    Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '[' 
+0

Не вы должны использовать квадратные скобки? – LokiSinclair

+0

Квадратные скобки .... Вы сделали опечатку! – Devrath

+0

Вы цитировали тело электронной почты, не избегая внутренних кавычек. –

ответ

0

emails Ваш элемент определяется как строка, начиная с "( и заканчивая )".

Внутри этой строки у вас есть отдельные строки, каждая из которых начинается и заканчивается кавычками.

Это, очевидно, неверно.

То, что вы, вероятно, предназначен является "emails" : [ ...... ]

(... если вы на самом деле не предназначены для emails элемента быть строкой, в этом случае кавычки внутри него должны быть экранированы, как \", как и линия кормов как \n. но я не думаю, что это то, что вы намеревались, не так ли?).

Вот почему вы получаете синтаксическую ошибку.

Однако, я думаю, ключевым моментом здесь является то, что такие проблемы демонстрируют, почему это плохая идея для написания кода JSON вручную (или даже других текстовых синтаксисов, таких как XML). Вы всегда должны использовать кодировщик или декодер для создания строк JSON с языка, с которым вы работаете. Это позволит вам избежать проблем с такими проблемами; если вы используете кодировщик, ваш JSON всегда будет действителен; вам не нужно беспокоиться об этом.

Надеюсь, что это поможет.

2

Вы должны использовать площадь скобки для всех массивов. Прямо сейчас вы используете скобки, и вы также начинаете с цитаты, указывающей строку вместо массива.

Либо вы хотите, чтобы все значение было строкой, в которой вы должны избегать кавычек в строке с помощью «\», или вы должны удалить цитату и заменить скобки квадратными скобками.

Примечание: Подсветка синтаксиса выше должна подсказывать, где вы ошибетесь.

0

Ваш массив представляется разделенным "( ... )" вместо [ .. ]. Между прочим, это делает строки внутри «наизнанку». Если вы означали, чтобы это была строка с кавычками, которая просто напоминает массив, вам нужно избежать котировок внутри это, как foo \"and\" bar. Блок-схема на http://www.json.org/ действительно очень полезна, так как это очень маленькая спецификация.

1

Вам необходимо сменить JSON на следующее. Или вам нужно избегать двойных кавычек, связанных с адресами электронной почты.

{"function":"contacts", "parameters": {"emails": [ 
    "[email protected]", 
    "[email protected]", 
    "[email protected]" 
    ],"user_id": "90"},"token":""} 
Смежные вопросы