更改JSON字符串

时间:2012-10-12 14:02:40

标签: php json symfony

我有一个JSON字符串,我想改变它。

JSON字符串看起来像

string '[{"id":"AT.02708872.T"},{"id":"DE.60232348.A"}]' (length=114)

我想将此JSON转换为

string '[{"id":"AT02708872"},{"id":"DE60232348"}]' (length=114)

所以我想删除这些点和最后一个字母。我正在使用Symfony2(PHP)

任何人都知道我该怎么做。

由于

4 个答案:

答案 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;