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