Ответ 1
Php имеет встроенную функцию JSON Serializing.
json_encode
Пожалуйста, используйте это, если вы можете и не страдаете синдромом Inv Invented Here.
У меня есть PHP script, который вызывается через jQuery AJAX. Я хочу, чтобы PHP скрипт возвращал данные в формате JSON в javascript. Здесь псевдокод в PHP скрипт:
$json = "{";
foreach($result as $addr)
{
foreach($addr as $line)
{
$json .= $line . "\n";
}
$json .= "\n\n";
}
$json .= "}";
В принципе, мне нужны результаты двух циклов, которые нужно вставить в $json.
Php имеет встроенную функцию JSON Serializing.
json_encode
Пожалуйста, используйте это, если вы можете и не страдаете синдромом Inv Invented Here.
Вот несколько примеров, отсутствующих в предыдущих ответах:
Установить заголовок в PHP:
header('Content-type: application/json');
echo json_encode($array);
json_encode()
может возвращать массив JavaScript вместо JavaScript объект, см.:
Возвращение JSON из PHP скрипт
Это может быть важно знать в некоторых случаях, когда массивы и объекты не совпадают.
В документации PHP содержится раздел JSON. Вам понадобится PHP 5.2.0.
Начиная с PHP 5.2.0, расширение JSON вставляется и скомпилировано в PHP по умолчанию.
Обычно вам будет интересно также иметь некоторую структуру для ваших данных в принимающей части:
json_encode($result)
Это также сохранит ключи массива.
Помните, что json_encode работает только с данными, закодированными utf8.
Вы можете использовать Simple JSON для PHP. Он отправляет заголовки, чтобы помочь вам подделать JSON.
Похоже:
<?php
// Include the json class
include('includes/json.php');
// Then create the PHP-Json Object to suits your needs
// Set a variable ; var name = {}
$Json = new json('var', 'name');
// Fire a callback ; callback({});
$Json = new json('callback', 'name');
// Just send a raw JSON ; {}
$Json = new json();
// Build data
$object = new stdClass();
$object->test = 'OK';
$arraytest = array('1','2','3');
$jsonOnly = '{"Hello" : "darling"}';
// Add some content
$Json->add('width', '565px');
$Json->add('You are logged IN');
$Json->add('An_Object', $object);
$Json->add("An_Array",$arraytest);
$Json->add("A_Json",$jsonOnly);
// Finally, send the JSON.
$Json->send();
?>