使用PHP从逗号分隔的字符串创建JSON

时间:2010-09-10 10:02:25

标签: php mysql json

我正在尝试从逗号分隔的字符串创建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);

提前Thanx!

2 个答案:

答案 0 :(得分:2)

json_encode()会将PHP数组转换为JS数组或对象。

这意味着您的JSON输出可能如下所示:

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

因为你的PHP数组是一个简单的数字键控数组,它会转换成一个基本的JS数组。

所需的输出类似,只是每个数组元素都采用{'key':'value'}的形式,而不仅仅是'value'。这意味着wach数组元素是一个对象(虽然只有一个键)。

要生成这个,你需要在爆炸后调整你的PHP代码,遍历每个数组元素并将其转换为嵌套数组。像这样:

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

...然后像以前一样将$ woot传递给json_encode()。

这将产生你正在寻找的输出。不知道你为什么要这样编码 - 是否真的需要所有那些测试对象?您是否正在进入需要此格式的现有JS程序?它看起来有点混乱,所以如果是这样的话,可能会有一些JS代码可以用来整理!

希望有所帮助。

答案 1 :(得分:0)

硬编码方式(未经测试):

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+上你可以使用lambda函数,参见“ Example #2 。”)