Подтвердить что ты не робот

Как сгенерировать json с помощью php?

Я никогда раньше не использовал JSON, и я пытаюсь использовать следующий javascript: http://jqueryselectcombo.googlecode.com/files/jquery.selectCombo1.2.6.js

Ему нужен вывод JSON в следующем формате:

[{oV: 'myfirstvalue', oT: 'myfirsttext'},
 {oV: 'mysecondvalue', oT: 'mysecondtext'}]

Не могли бы вы привести меня к примеру о том, как сгенерировать вывод JSON, как описано выше, используя PHP?

4b9b3361

Ответ 1

Самый простой способ - начать с ассоциативного массива пар, который вы хотите:

$data = array("myfirstvalue" => "myfirsttext", "mysecondvalue" => "mysecondtext");

затем используйте привязку foreach и некоторую конкатенацию строк:

$jsontext = "[";
foreach($data as $key => $value) {
    $jsontext .= "{oV: '".addslashes($key)."', oT: '".addslashes($value)."'},";
}
$jsontext = substr_replace($jsontext, '', -1); // to get rid of extra comma
$jsontext .= "]";

Или, если у вас есть последняя версия PHP, вы можете использовать встроенные функции кодирования json - просто будьте осторожны с данными, которые вы передаете, чтобы они соответствовали ожидаемому формату.

Ответ 2

После того, как у вас есть данные PHP, вы можете использовать функцию json_encode; он связан с PHP с PHP 5.2

В вашем случае строка JSON представляет:

  • список, содержащий 2 элемента
  • каждый из которых является объектом, содержащим 2 свойства/значения

В PHP это создаст структуру, которую вы представляете:

$data = array(
    (object)array(
        'oV' => 'myfirstvalue',
        'oT' => 'myfirsttext',
    ),
    (object)array(
        'oV' => 'mysecondvalue',
        'oT' => 'mysecondtext',
    ),
);
var_dump($data);

var_dump получает вас:

array
  0 => 
    object(stdClass)[1]
      public 'oV' => string 'myfirstvalue' (length=12)
      public 'oT' => string 'myfirsttext' (length=11)
  1 => 
    object(stdClass)[2]
      public 'oV' => string 'mysecondvalue' (length=13)
      public 'oT' => string 'mysecondtext' (length=12)

И, кодируя его в JSON:

$json = json_encode($data);
echo $json;

Вы получаете:

[{"oV":"myfirstvalue","oT":"myfirsttext"},{"oV":"mysecondvalue","oT":"mysecondtext"}]


BTW: Frolm, что я помню, я бы сказал, что ваша строка JSON недействительна - данные JSON: внутри строки должны быть двойные кавычки, включая имена свойств объектов

См. http://www.json.org/ для грамматики.


Надеюсь, это поможет: -)

Ответ 4

Это PHP-код для генерации json-формата

<?php

    $catId = $_GET['catId'];
    $catId = $_POST['catId'];   

    $conn = mysqli_connect("localhost","root","","DBName");
    if(!$conn)
    {
        trigger_error('Could not Connect' .mysqli_connect_error());
    }

    $sql = "SELECT * FROM TableName";
    $result = mysqli_query($conn, $sql);

    $array = array();

    while($row=mysqli_fetch_assoc($result))
    {
        $array[] = $row;
    }

    echo'{"ProductsData":'.json_encode($array).'}'; //Here ProductsData is just a simple String u can write anything instead
    mysqli_close('$conn');
?>