-1

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

JSON字符串看起来像

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

我想将此 JSON 转换为

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

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

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

谢谢

4

4 回答 4

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 处理,所以你可能想检查一下。

于 2012-10-12T14:14:50.853 回答
0

您可以使用 javascript 正则表达式将不需要的元素替换为空白字符串。但是,您应该在将字符串解析为 php 对象之前执行此操作。

于 2012-10-12T14:06:54.187 回答
0

是一根弦吗?在其上运行正则表达式:

<?
   $str =  '[{"id":"AT.02708872.T"},{"id":"DE.60232348.A"}]' ;
   echo preg_replace('/\.[A-Z]"/','"',$str);
?>

这是假设你所有的 id 都以 . 1个大写字母。

于 2012-10-12T14:10:50.743 回答
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;
于 2012-10-12T14:15:00.600 回答