json_decode для извлеченной строки json из mysql не работает - PullRequest
0 голосов
/ 28 октября 2009

У меня есть строка json, которая дает следующий дамп var:

"[[{"TransactionID":"00416","OrderID":"000926","TransactionOrderItemID":"001123","LastUpdate":"2009-10-28 13:03:31","CustomerID":"184","Company_name":"Test123","Invoiced":"0","SubItemsCount":"2","ProductID":"1","ProductTypesID":"1","ProductTypeName":"Phone","ProductName":"Phone Line (Home)","IncludePST":"1","BillType":"Monthly","BillingCycle":"Monthly","Status":"Active","CreationDate":"2009-10-28","ActivationStartDate":"2009-10-28","NextNotificationDate":"2009-10-27","OverWritePrice":"-1","PriceEconomic":"26.00","BasePrice":"26.0000","ProRate":"Yes","InvoicePrice":"3.35","ServicePeriod":" Pro-Rate: Oct-28-2009 - Oct-31-2009","EndDate":"2009-10-31"}]]"

Когда я пытаюсь расшифровать как:

json_decode( $json, true);

Результат просто нулевой. $ json from db.
Обратите внимание, что я показываю только подмножество полных данных. Вопросы, это переменная от дБ. Если проблема в двойных кавычках, как их разыграть?

Ответы [ 2 ]

2 голосов
/ 28 октября 2009

Вы можете позвонить json_last_error(), чтобы получить больше информации о том, что пошло не так.

Например, таким образом:

json_decode($string);

switch(json_last_error())
{
    case JSON_ERROR_DEPTH:
        echo ' - Maximum stack depth exceeded';
    break;
    case JSON_ERROR_CTRL_CHAR:
        echo ' - Unexpected control character found';
    break;
    case JSON_ERROR_SYNTAX:
        echo ' - Syntax error, malformed JSON';
    break;
    case JSON_ERROR_NONE:
        echo ' - No errors';
    break;
}
0 голосов
/ 28 октября 2009

Это может быть проблема с символами UTF-8. Многие посты на странице справочника json_decode предполагают, что некоторые проблемы с конвертацией необходимо решить.

Попробуйте использовать json_decode(utf8_encode($json));

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