Создание JSON из строки с запятой в PHP - PullRequest
1 голос
/ 10 сентября 2010

Я пытаюсь создать JSON из строки, разделенной запятой, строка выглядит примерно так:

One,Two,Three,Four,Five,Six,Seven

Мне нужно, чтобы это выглядело примерно так:

[{"test":"One"},{"test":"Two"},{"test":"Three"},{"test":"Four"},{"test":"Five"},{"test":"Six"},{"test":"Seven"}]

Вот код, который у меня есть:

$string = mysql_fetch_array($test, true);
$woot = explode(',', $string['test']);

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

Спасибо заранее!

Ответы [ 2 ]

2 голосов
/ 10 сентября 2010

json_encode () превратит массив PHP в массив или объект JS.

Это означает, что ваш вывод JSON будет выглядеть примерно так:

['One','Two','Three','Four','Five','Six','Seven']

то есть, поскольку ваш массив PHP представляет собой простой массив с числовыми ключами, он преобразуется в базовый массив JS.

Желаемый вывод аналогичен, за исключением того, что каждый элемент массива имеет форму {'ключ': 'значение'}, а не просто 'значение'. Это означает, что каждый элемент массива является объектом (хотя и с одним ключом).

Чтобы создать это, вам нужно будет адаптировать свой PHP-код после разнесения, чтобы пройти через каждый элемент массива и превратить его во вложенный массив. Примерно так:

foreach($woot as $key=>$value) {$woot[$key]=array('test'=>$value);}

... и затем передайте $ woot в json_encode (), как и раньше.

Это даст в значительной степени результат, который вы ищете. Не уверен, почему вы хотели бы закодировать это так - все ли эти тестовые объекты действительно необходимы? Вы переходите в существующую программу JS, которая требует этот формат? Это выглядит немного грязной структурой, так что если это так, то, вероятно, есть некоторый код JS, который можно было бы сделать с уборкой!

Надеюсь, это поможет.

0 голосов
/ 10 сентября 2010

Жестко запрограммированный способ (непроверенный):

function my_wrap($val) {
    return '{"test":"' . $val. '"}';
}

$parts = explode(',', 'One,Two,Three,Four,Five,Six,Seven');
$parts = array_map('my_wrap', $parts);
$json = '[' . implode(',', $parts) . ']';

(Если в PHP 5.3+ вы можете использовать лямбда-функцию, см. " Пример # 2 . ")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...