2015-03-10 3 views
0

Я отправляю сообщение JSON на PHP, содержащий несколько элементов. Моя JSON выглядит следующим образом:Преобразование JSON в PHP Array

[ 
    { 
     "request": "submitTicket", 
     "id": "3", 
     "delivLoc": "1 COLORADO CITY", 
     "estimatedBarrels": "123.0", 
     "facilityID": "T666778", 
     "highDegreeF": "0.0", 
     "highOilFeet": "0" 
    }, 
    { 
     "request": "submitTicket", 
     "id": "4", 
     "delivLoc": "1 COLORADO CITY", 
     "estimatedBarrels": "143.0", 
     "facilityID": "T666778", 
     "highDegreeF": "0.0", 
     "highOilFeet": "0" 
    }, 
    { 
     "request": "submitTicket", 
     "id": "5", 
     "delivLoc": "1 COLORADO CITY", 
     "estimatedBarrels": "122.0", 
     "facilityID": "T666778", 
     "highDegreeF": "0.0", 
     "highOilFeet": "0" 
    } 
] 

Я пытался использовать json_decode() в PHP, но он возвращается нуль, который вызывает цикл Еогеасп на провал. Почему декодер не работает?

На самом деле этот JSON получает обратно косые черты, вставленные в него при приходе на PHP. Я вынул их перед публикацией здесь, а также попытался запустить его с помощью stripslashes().

+0

Не могли бы вы показать результат 'var_dump' /' print_r' переменной, которую вы пытаетесь использовать json_decode? – akhyar

+0

в андроиде или php? http://www.androidhive.info/2012/01/android-json-parsing-tutorial/ –

+0

Вы посмотрели [документацию] (http://php.net/manual/en/function.json-decode. PHP)? «NULL» возвращается, если json не может быть декодирован или если кодированные данные глубже, чем предел рекурсии ». Ваш JSON, скорее всего, искажен. – dimo414

ответ

1

Попробуйте это ..

$data ='[ 

{"request":"submitTicket","id":"3","delivLoc":"1 COLORADO CITY","estimatedBarrels":"123.0","facilityID":"T666778","highDegreeF":"0.0","highOilFeet":"0"}, 
{"request":"submitTicket","id":"4","delivLoc":"1 COLORADO CITY","estimatedBarrels":"143.0","facilityID":"T666778","highDegreeF":"0.0","highOilFeet":"0"}, 
{"request":"submitTicket","id":"5","delivLoc":"1 COLORADO CITY","estimatedBarrels":"122.0","facilityID":"T666778","highDegreeF":"0.0","highOilFeet":"0"} 

]'; 

$jsonarray=json_decode($data,true); 
print_r($jsonarray); 
+0

Это работало как тест, но когда я говорю: $ data = json_decode ($ _ POST ['json'], true); то $ data всегда возвращается null. –

+0

confrim ваше сообщение правильно подходит или нет, например print_r ($ _ POST ['json']) –

+0

Jocker, я подтвердил это, и он подходит, но с обратной косой чертой перед каждой цитатой. –

0

Попробуйте это.

 
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; 

var_dump(json_decode($json)); 
var_dump(json_decode($json, true)); 

Выход:

object(stdClass)#1 (5) { 
    ["a"] => int(1) 
    ["b"] => int(2) 
    ["c"] => int(3) 
    ["d"] => int(4) 
    ["e"] => int(5) 
} 

array(5) { 
    ["a"] => int(1) 
    ["b"] => int(2) 
    ["c"] => int(3) 
    ["d"] => int(4) 
    ["e"] => int(5) 
} 
0

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

просто присвоить данные в переменной и использовать как этот

var data = [{ 
     "request": "submitTicket", 
     "id": "3", 
     "delivLoc": "1 COLORADO CITY", 
     "estimatedBarrels": "123.0", 
     "facilityID": "T666778", 
     "highDegreeF": "0.0", 
     "highOilFeet": "0" 
    }, 
    { 
     "request": "submitTicket", 
     "id": "4", 
     "delivLoc": "1 COLORADO CITY", 
     "estimatedBarrels": "143.0", 
     "facilityID": "T666778", 
     "highDegreeF": "0.0", 
     "highOilFeet": "0" 
    }, 
    { 
     "request": "submitTicket", 
     "id": "5", 
     "delivLoc": "1 COLORADO CITY", 
     "estimatedBarrels": "122.0", 
     "facilityID": "T666778", 
     "highDegreeF": "0.0", 
     "highOilFeet": "0" 
    } 
] 

, а затем передать это с помощью AJAX (я предполагаю, что вы используете AJAX) в части данных что-то вроде этого

$.ajax({ 
    url:[your url], 
    data:data, 
    .... 
}); 

надеюсь, что это сработает

1

Я понял это после игры со всеми предложениями. Мне пришлось удалить косые черты с сообщения, прежде чем пытаться расшифровать JSON. Я декодировался в массив PHP следующим образом:

$data = json_decode(stripslashes($_POST['json'])); 

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