我有一个JSON字符串,我想改变它。
JSON字符串看起来像
string '[{"id":"AT.02708872.T"},{"id":"DE.60232348.A"}]' (length=114)
我想将此JSON转换为
string '[{"id":"AT02708872"},{"id":"DE60232348"}]' (length=114)
所以我想删除这些点和最后一个字母。我正在使用Symfony2(PHP)
任何人都知道我该怎么做。
由于
答案 0 :(得分:2)
解码,修改,重新编码。
<?php
$json = '[{"id":"AT.02708872.T"},{"id":"DE.60232348.A"}]';
// Decode the JSON data into an array of objects.
// Symfony probably will have some JSON handling methods so you could look at
// those to keep the code more Symfony friendly.
$array = json_decode($json);
// Loop through the array of objects so you can modify the ID of
// each object. Note the '&'. This is calling $object by reference so
// any changes within the loop will persist in the original array $array
foreach ($array as &$object)
{
// Here we are stripping the periods (.) from the ID and then removing the last
// character with substr()
$object->id = substr(str_replace('.', '', $object->id), 0, -1);
}
// We can now encode $array back into JSON format
$json = json_encode($array);
var_dump($json);
Symfony2中可能存在原生JSON处理,因此您可能需要检查它。
答案 1 :(得分:0)
您可以使用javascript正则表达式将空白字符串替换为不需要的元素。但是,在将字符串解析为php对象之前,您应该这样做。
答案 2 :(得分:0)
是一根绳子吗?在其上运行正则表达式:
<?
$str = '[{"id":"AT.02708872.T"},{"id":"DE.60232348.A"}]' ;
echo preg_replace('/\.[A-Z]"/','"',$str);
?>
这假设你的所有id都以。 1个大写字母。
答案 3 :(得分:0)
$json = '[{"id":"AT.02708872.T"},{"id":"DE.60232348.A"}]';
$json = json_decode($json, true);
$result = array();
foreach($json as $item) {
$tmp = explode('.', $item['id']);
$result[] = array('id' => $tmp[0] . $tmp[1]);
}
$result = json_encode($result);
echo $result;