我是初学者,对这个愚蠢的问题感到抱歉,
我有一个包含大量数据的json,我必须在php中处理这个文件。 (编辑/删除/过滤对象)。
我是怎么想的:这个类包含一个对象列表和从json加载对象的函数,另一个用来写回来。此外,列表上的操作的其他功能。
我要问的是最好的方法是什么,因为我的想法是最简单的,比每次点击一样:编辑,删除,过滤我必须一次又一次地重新加载loatJsonObjects(),你能给我一个更好的方法来做到这一点,每次都不会做那么多的操作吗?谢谢!
答案 0 :(得分:2)
所以,我不应该真的为你写一个,但今天早上我心情很好。试试这个:
Class Json_Handler {
private $json_object;
public function __construct($json_data) {
if(is_object($json_data) {
$this->json_object = $json_data;
}
}
public function edit($key, $value) {
if(isset($this->json_data[$key])) {
$this->json_data[$key] = $value;
return $this;
}
else {
return FALSE;
}
}
public function delete($key) {
if(isset($this->json_data[$key])) {
unset($this->json_data[$key]);
return $this;
}
else {
return FALSE;
}
}
public function filter($on = 'key', $filter == NULL) {
$filtered_objects = array();
switch($on) {
case 'key':
default:
foreach($this->json_data as $key => $value) {
if($key == $value) {
$filtered_objects[] = array($key => $value);
}
}
break;
case 'value':
foreach($this->json_data as $key => $value) {
$filtered_objects[] = array($key => $value);
}
break;
}
return $filtered_objects;
}
public function get_json() {
return json_encode($this->json_data);
}
public function set_json($json) {
$this->json_data = (is_object($json) ? $json : json_encode($json));
return $this;
}
}
然后您可以这样使用它:
$my_json_data = json_decode([...]);
$json = new Json_Handler($my_json_data);
echo $json->edit('test', 'now i have this value')
->delete('test')
->filter('key', 'bar');
->set_json(json_encode($new_json)
->get_json();
答案 1 :(得分:0)
您可以将JSON数据解码为Array,并将其存储在Global Variable或Session变量中。然后使用该会话变量进行编辑,删除,过滤操作。我不知道这是好还是不行,但这是其中一种方法。
让我知道任何其他方式......
答案 2 :(得分:0)
如果您可以将数据保存在普通的PHP数据对象中并在此对象中使用“处理”例程,那么您可以减少需要对该数据重新执行的操作量。
然后可以缓存此对象,从而加快将来的数据检索速度。此外,您不需要在同一数据集上重新运行这些昂贵的操作(直到缓存的项目到期)。