2012-05-15 2 views
0

Я новичок с этим так извините за глупый вопрос,нагрузки большой объем данных JSON в PHP

У меня есть JSON с большим количеством данных в нем, и я должен обработать этот файл в PHP , (Изменить/Удалить/Фильтровать объекты).

Как я могу это сделать: класс, содержащий список объектов и функции для загрузки объектов из json и другого для их записи. Кроме того, другие функции для операций над списком.

То, что я прошу, это лучший способ сделать это, потому что моя идея является самой простой, чем каждый раз, когда я нажимаю: Edit, Delete, Filter. Мне нужно перезагрузить снова и снова loatJsonObjects() , можете ли вы дать мне лучший способ сделать это, что не будет делать так много операций каждый раз? Спасибо !

ответ

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(); 
0

Вы можете декодировать данные JSON в Array и хранить их в переменной Global Variable или Session. Затем использует эту переменную сеанса для операций «Редактировать», «Удалить», «Фильтровать». Я не знаю, что это хорошо или нет, но это один из способов сделать.

дайте мне знать, какие-либо другие способы ....

0

Если вы можете хранить данные в простом объекте PHP данных и имеете свою «обработку» подпрограмму в пределах этого объекта, то вы можете уменьшить количество операций, которые вы необходимо повторно выполнить эти данные.

Этот объект можно затем кэшировать, ускоряя поиск в будущем данных. Кроме того, вам не нужно повторно запускать эти дорогостоящие операции в одном наборе данных (до истечения срока действия кэшированного элемента).