2013-07-22 2 views
0

У меня есть сценарий для получения сообщения json object из внешней системы. Он должен получить объект JSON со следующим:validate json post from external

{"data":[{"BegRecNbr": 81, "RecFrag": [{"Fields": {"mA": [1406.205078125, 1914.948486328125], "mB": [1769.690673828125, 1816.0640869140625, 1692.6290283203125, 744.02020263671875]}, "RecNbr": 81, "TimeOfRec": [731495520, 0]}], "TableNbr": 3}, {"BegRecNbr": 82, "RecFrag": [{"Fields": {"mA": [1406.19384765625, 1915.2742919921875], "mB": [1768.99462890625, 1815.36767578125, 1692.615478515625, 744.01434326171875]}, "RecNbr": 82, "TimeOfRec": [731496480, 0]}], "TableNbr": 3, "NbrOfRecs": 1}]} 

Я не могу прикоснуться к внешней системе, так что я могу войти только в файл объекта пост, прежде чем я обработать.

я попытался войти файл, используя log_message в CI только для отладки

log_message('debug','values json1: '.$_POST); 
$log_my_post = var_export($_POST, TRUE); 
$log_my_post = str_replace(array("\r","\n"," "), '', $log_my_post); 
log_message('debug','values json2: '.$log_my_post); 

в лог-файл, я могу видеть только

DEBUG - 2013-07-22 16:01:28 --> values json1: Array 
DEBUG - 2013-07-22 16:01:28 --> values json2: array() 

Как я могу видеть детали массива отправленного в мой сценарий от внешней системы , чтобы я мог проверить правильное отправленное сообщение?

Цените помощь.

С уважением

+0

Где вы получаете json на стороне клиента или на стороне сервера? – iJade

+0

@iBlue на стороне сервера – Frans

ответ

0

Это работает:

$string='{"data":[{"BegRecNbr": 81, "RecFrag": [{"Fields": {"mA": [1406.205078125, 1914.948486328125], "mB": [1769.690673828125, 1816.0640869140625, 1692.6290283203125, 744.02020263671875]}, "RecNbr": 81, "TimeOfRec": [731495520, 0]}], "TableNbr": 3}, {"BegRecNbr": 82, "RecFrag": [{"Fields": {"mA": [1406.19384765625, 1915.2742919921875], "mB": [1768.99462890625, 1815.36767578125, 1692.615478515625, 744.01434326171875]}, "RecNbr": 82, "TimeOfRec": [731496480, 0]}], "TableNbr": 3, "NbrOfRecs": 1}]}'; 
print_r(json_decode($string,1)); 

Попробуйте использовать json_decode ($ строка, 1). 1 означает, что вы возвращаете массив вместо объекта.

+0

Привет @Luc, когда я использую json_decode ($ string, 1), он возвращает пустое значение в файле журнала и дает предупреждение «Severity: Warning -> json_decode() ожидает, что параметр 1 будет строкой, массив задан ....» – Frans

+0

Тогда что-то не соответствует вашей $ string. Если вы точно копируете/вставляете эти две строки, это не работает? Какую версию PHP вы используете? Ошибка является странной, параметр 1 представляет собой строку $ string, которая является строкой в ​​моем примере. Но согласно вашей ошибке, это массив ... – Luc

+0

Привет @Luc, Как и в моих лучших предложениях, я должен получать json obj из внешней системы, и я хотел бы проверить, сохраняя в файле. Но я все еще не могу получить деталь json в файле – Frans

0

Попробуйте использовать

log_message('debug','values json2: '.json_encode($log_my_post)); 
+0

hi @iBlue, результат json_encode ($ _ POST) по-прежнему остается только Array. Для второго .json_encode ($ log_my_post), я расскажу вам через несколько минут – Frans

+0

hi @iBlue .json_encode ($ log_my_post) Результат «array()» – Frans

+0

любой другой идеи? – Frans