我有一个 JSON 字符串,我想更改它。
JSON字符串看起来像
string '[{"id":"AT.02708872.T"},{"id":"DE.60232348.A"}]' (length=114)
我想将此 JSON 转换为
string '[{"id":"AT02708872"},{"id":"DE60232348"}]' (length=114)
所以我想删除点和最后一个字母。我正在使用 Symfony2 (PHP)
任何人都知道我该怎么做。
谢谢
解码、修改、重新编码。
<?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 处理,所以你可能想检查一下。
您可以使用 javascript 正则表达式将不需要的元素替换为空白字符串。但是,您应该在将字符串解析为 php 对象之前执行此操作。
是一根弦吗?在其上运行正则表达式:
<?
$str = '[{"id":"AT.02708872.T"},{"id":"DE.60232348.A"}]' ;
echo preg_replace('/\.[A-Z]"/','"',$str);
?>
这是假设你所有的 id 都以 . 1个大写字母。
$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;