2010-01-11 2 views
1

My Google Docs возвращает Spreadsheet вызов этот ответ в формате JSON
(мне нужно только все после «строк») пожалуйста, посмотрите на formatted response here:)Как декодировать JSon откоса таблицы Google в качестве массива Php

Я использую функцию php json_decode для синтаксического анализа данных и их использования (да, я ужасен в php). Этот код возвращает NULL, и в соответствии с документацией возвращается NULL «если json не может быть декодирован».

$json = file_get_contents($jsonurl);
$json_output = json_decode($json);

var_dump ($json_output); // Returns NULL

В принципе, я хочу сделать простой массив из первых значений строки ответа Json.

нравится эта

$array = {'john','John Handcock','[email protected]','2929292','blanc'} 

Вы, ребята, гений, я был бы признателен за ваше понимание и помощь по этому вопросу очень много!

Ответ как «sberry2A» упоминает ниже, ответ не является действительным Json, Google предлагает Zend Json library для этой цели, Тхо я решил разобрать версию TSV-первенствовать вместо :)

+0

хмм .. это действительно вернуть Null – streetparade

+0

да, это делает, к сожалению. – Mohammad

ответ

1

Данные в ссылка, предоставленная вами, недействительна JSON. То, что вы предоставили, похоже, является расшифрованной версией. Вы можете сказать, что это не JSON, потому что ключи массива не цитируются. Например, версия должна быть «версией».

Ваши данные должны выглядеть как этот

'{"version":"0.6","reqId":"requestIDnumber","status":"ok","sig":"65724392","table":{"cols":[{"id":"A","label":"slug","type":"string", "pattern":""},{"id":"B","label":"name","type":"string","pattern":""},{"id":"C","label":"email","type":"string","pattern":""},{"id":"D","label" :"nsid","type":"number","pattern":"#0.###############"},{"id":"E","label":"theme","type":"string","pattern":""}],"rows":[{"c":[{"v":"mo"},{"v": "Mohammad Taheri"},{"v":"[email protected]"},{"v":"2929292.0","f":"2929292"},{"v":"blanc"}]}]}}' 



$json = '{"version":"0.6","reqId":"requestIDnumber","status":"ok","sig":"65724392","table":{"cols":[{"id":"A","label":"slug","type":"string", "pattern":""},{"id":"B","label":"name","type":"string","pattern":""},{"id":"C","label":"email","type":"string","pattern":""},{"id":"D","label" :"nsid","type":"number","pattern":"#0.###############"},{"id":"E","label":"theme","type":"string","pattern":""}],"rows":[{"c":[{"v":"mo"},{"v": "Mohammad Taheri"},{"v":"[email protected]"},{"v":"2929292.0","f":"2929292"},{"v":"blanc"}]}]}}'; 
$data = json_decode($json); 
print_r($data->table->rows); 

// выход

Array ([0] => stdClass Object ([c] => Array ([0] => stdClass Object ([v] => mo) [1] => stdClass Object ([v] => Mohammad Taheri) [2] => stdClass Object ([v] => [email protected]) [3] => stdClass Object ([v] => 2929292.0 [f] => 2929292) [4] => stdClass Object ([v] => blanc)))) 
+0

hmmm, это имеет смысл. И все же это то, что Google предоставляет как ответ Json. Ссылка на фактический ответ -> http://bit.ly/8OXy3e Знаете ли вы, что в любом случае вы преодолеваете этот плохой отформатированный ответ с более толерантным кодом? Большое спасибо sberry2A. – Mohammad

+0

Вы используете опубликованный API, или вы нашли этот вызов через http-прокси, как скрипач, firebug, charles? Из того, что я могу сказать, попадание на эту страницу возвращает объект javascript, а не json. – sberry

+0

Это был документированный звонок, насколько я помню, и сейчас я пытаюсь найти ссылку на документацию api. – Mohammad

0

ли вы попробуйте удалить функцию обратного вызова из ответа myData(...)?

+0

Нет, я тоже попробую:) – Mohammad

+0

Ошибка анализа: ошибка синтаксического разбора в D: \ wamp \ www \ lalala \ index.php в строке 61 строка 61: $ json_output = json_decode ($ json); – Mohammad

+0

Не забудьте добавить косые черты вокруг него. Вход json представляет собой строку. – phidah

0
$json = file_get_contents($jsonfile); 
$data = json_decode($json); 
print_r($data); 
+0

это именно то, что я использовал в вопросе, и все же это работает только с правильно отформатированным Json, а не с документами google – Mohammad

0

Пакет PEAR Services_Json способен анализировать JSON с неупомянутыми ключами. Итак, разделите обратный вызов и выполните синтаксис с Services_Json, и я считаю, что это сработает.

http://mike.teczno.com/JSON/doc/

+0

Спасибо ColinM, после того, как я понял, что это была нестандартная реализация Json, я заметил несколько пакетов, которые бы обрабатывали его. Они были слишком надежными, поэтому я написал собственный крошечный скрипт для анализа файла. – Mohammad

+0

Ahh. d хотел бы видеть, что если вы не возражаете размещать его где-нибудь (пастебин и т. д.). – ColinM