2014-02-11 2 views
-1

У меня есть строка JSON, которую я пытаюсь разобрать с помощью json_decode($s,true). Если я var_dump моих строк, это выглядит следующим образом:json_decode() возвращает NULL из-за двойных кавычек

string(186) "[{"ta_id":97497,"partner_id":"229547","partner_url":"http://partner.com/deeplink/to/229547"},"ta_id":97832,"partner_id":"id34234","partner_url":"http://partner.com/deeplink/to/id34234"}]" 

Вы можете увидеть эти двойные кавычки (и неправильную подсветку синтаксиса) в начале строки, и я полагаю, что моя проблема. json_last_error()4

Как это исправить? Строка извлекается из данных POST. Спасибо

+0

Двойные кавычки здесь не являются проблемой (именно так PHP показывает строки при использовании 'var_dump'). Вам не хватает '{' до 2-го 'ta_id'. –

+0

OMG Я так свалка. Спасибо всем. – simPod

ответ

2

Ваш Json недействителен.

Parse error on line 7: 
..." }, "ta_id": 97832, "partne 
---------------------^ 
Expecting '}', ',', ']' 
1

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

Strip их подальше от концов и validate the JSON, и вы получите:

[ 
    { 
     "ta_id": 97497, 
     "partner_id": "229547", 
     "partner_url": "http://partner.com/deeplink/to/229547" 
    }, 
    "ta_id": 97832, 
    "partner_id": "id34234", 
    "partner_url": "http://partner.com/deeplink/to/id34234" 
} 
] 

Parse error on line 7: 
..." }, "ta_id": 97832, "partne 
---------------------^ 
Expecting '}', ',', ']' 

У вас есть отсутствующий {.

+0

Вернее, у него отсутствует '{'. –

+0

@RocketHazmat - Хорошее место. – Quentin

1
[ 
    { 
     "ta_id":97497, 
     "partner_id":"229547", 
     "partner_url":"http://partner.com/deeplink/to/229547" 
    }, 
    "ta_id":97832, 
    "partner_id":"id34234", 
    "partner_url":"http://partner.com/deeplink/to/id34234" 
    } 
] 

Как вы можете видеть из этого пробоя, вам не хватает {. Это является причиной вашей синтаксической ошибки.

1

Двойные кавычки не являются проблемой. Вам не хватает открывающей фигурной скобки { в вашем JSON. Правильная строка JSON должна выглядеть следующим образом:

[ 
    { 
     "ta_id": 97497, 
     "partner_id": 229547, 
     "partner_url": "http://partner.com/deeplink/to/229547" 
    }, 
    { <----------------------------- this was the problem 
     "ta_id": 97832, 
     "partner_id": "id34234", 
     "partner_url": "http://partner.com/deeplink/to/id34234" 
    } 
] 

Проверка строки JSON, используя сервис онлайн-проверки, такие как JSONLint.com бы помог вам разобраться вопрос легко.

Смежные вопросы