2013-02-25 3 views
1

Im пытается декодировать json-файл в php.После json_decode проигрывает около 22 некоторых символов

function ReturnJson(){ 
    $json_data = json_decode(file_get_contents('data.json'), true); 
    for ($i = 0, $len = count($json_data); $i< $len; ++$i){ 

     $json_data[$i]['num'] = (string) ($i +1); 
    } 
    print_r($json_data); 
    return $json_data; 
    } 

Однако здесь я замечаю, что мне не хватает около 20 символов в массиве, отсутствующих в моем исходном файле.

Мысли?

Ok вот небольшой отрывок из JSon документа, его огромен, но само начало отличается от оригинального

малого исходного файла:

{"events":[{"control":null,"submitter":{"deviceId":"1","sessionId":"1"},"variables":[{"scope":"SESSION","value":"iPhone OS","name":"osName"},{"scope":"SESSION","value":"x86_64","name":"hardwareType"},{"scope":"SESSION","value":"6.0","name":"osVersion"},{"scope":"EVENT","value":"51115abd1e0422c533000002","name":"variant"}],"label":null,"category":null,"location":"ADSettingsViewController","timestamp":"2012-11-16T19:23:57Z","action":null,"type":"PAGEVIEW","versionNumber":"1.0","value":0,"submitted":0,"appId":"50fdc396b9efd172b8000065","controlEvent":null},{"control":null,"submitter":{"deviceId":"1","sessionId":"1"},"variables":[{"scope":"SESSION","value":"iPhone OS","name":"osName"},{"scope":"SESSION","value":"x86_64","name":"hardwareType"},{"scope":"SESSION","value":"6.0","name":"osVersion"},{"scope":"EVENT","value":"51115abd1e0422c533000002","name":"variant"}],"label":null,"category":null,"location":"ADProductViewController","timestamp":"2012-11-16T19:23:59Z","action":null,"type":"PAGEVIEW","versionNumber":"1.0","value":0,"submitted":0,"appId":"50fdc396b9efd172b8000065","controlEvent":null} 

Что выходит:

{"control":null,"submitter":{"deviceId":"1","sessionId":"1"},"variables":[{"scope":"SESSION","value":"iPhone OS","name":"osName"},{"scope":"SESSION","value":"x86_64","name":"hardwareType"},{"scope":"SESSION","value":"6.0","name":"osVersion"},{"scope":"EVENT","value":"51115abd1e0422c533000002","name":"variant"}],"label":null,"category":null,"location":"ADSettingsViewController","timestamp":"2013-02-25T16:22:57Z","action":null,"type":"PAGEVIEW","versionNumber":"1.0","value":0,"submitted":0,"appId":"50fdc396b9efd172b8000065","controlEvent":null}{"control":null,"submitter":{"deviceId":"1","sessionId":"1"},"variables":[{"scope":"SESSION","value":"iPhone OS","name":"osName"},{"scope":"SESSION","value":"x86_64","name":"hardwareType"},{"scope":"SESSION","value":"6.0","name":"osVersion"},{"scope":"EVENT","value":"51115abd1e0422c533000002","name":"variant"}],"label":null,"category":null,"location":"ADProductViewController","timestamp":"2013-02-25T16:22:57Z","action":null,"type":"PAGEVIEW","versionNumber":"1.0","value":0,"submitted":0,"appId":"50fdc396b9efd172b8000065","controlEvent":null}{"control":"UIRoundedRectButton","submitter":{"deviceId":"1","sessionId":"1"},"variables":[{"scope":"SESSION","value":"iPhone OS","name":"osName"},{"scope":"SESSION","value":"x86_64","name":"hardwareType"},{"scope":"SESSION","value":"6.0","name":"osVersion"},{"scope":"EVENT","value":"51115abd1e0422c533000002","name":"variant"}],"label":"Checkout Now","category":"ADProductViewController","location":null,"timestamp":"2013-02-25T16:22:57Z","action":"checkoutNowTapped:","type":"EVENT","versionNumber":"1.0","value":0,"submitted":0,"appId":"50fdc396b9efd172b8000065","controlEvent":"UIControlEventTouchUpInside"} 
+2

Можете ли вы привести пример не работает входных данных? – scones

+2

'print_r ($ json_data);' перед вашим циклом. Вероятно, вы переписываете данные в свой цикл. –

+0

Опубликовано! И я сделал print_r ($ json_data); то же самое я могу сказать, что начало отсутствует. – TooTiredToDrink

ответ

2

Трудно сказать, не видя ваши данные, но возможной причиной могут быть индексы, которые не являются последовательными (0, 2, 5, 6 вместо 0, 1, 2, 3).

Если вы не уверены в том, что данные содержат, то лучше использовать foreach в петлю над массивом:

foreach ($json_data as $key => $value) 
{ 
    ... 
} 
+0

Так что да, это действительно помогло. Тем не менее, проблема была в одном из моих foreach была удалением запятых и начало файла по какой-либо причине – TooTiredToDrink

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