Можно ли загрузить несколько json файлов, найденных в каталоге? Как * регулярное выражение, но с использованием Jquery. Или объединить json файлы в один? - PullRequest
1 голос
/ 01 марта 2020

Это дилемма, с которой я столкнулся. Кажется, я не могу определить лучший подход здесь.

Мой сервер перетянул несколько файлов json в один каталог, и файлы json все в одной структуре. Каждый из файлов имеет случайно сгенерированное имя файла.

Моя конечная цель - добавить определенные элементы каждого файла json в легко читаемую таблицу html.

Вот мой текущий код, который отлично работает с одним файлом json :

$.getJSON('testing1.json, function(data) {
$.each(data.user.products, function () {
  $("table").append($("<tr>").append(
    $("<td>").addClass("Title").text(this.title),
    $("<td>").addClass("Price").text("$"+this.price),
    $("<td>").addClass("Stock").text(this.stock),
  ));
});
});

Теперь мне нужно выяснить, как лучше всего go узнать о моей проблеме. У меня ~ 250 json файлов, которые мне нужны, чтобы l oop до конца. Очевидно, это регулярное выражение не сработает, но может дать вам представление о том, что я пытаюсь сделать:

$.getJSON('*.json, function(data) { 

Я бы предпочел не объединять их все в один файл. Но тот факт, что все имена генерируются случайным образом, и я не знаю, как загрузить несколько файлов json в мой код, я беспокоюсь, что мне придется это сделать. Но это был бы не конец света, если бы это было так.

Можно ли использовать Jquery / PHP до l oop через каталог и вытянуть все файлы json? Если так, то как бы один go о загрузке каждого json файла для добавления данных?

Я действительно ценю помощь заранее, даже pu sh в правильном направлении очень ценится.

Ответы [ 2 ]

0 голосов
/ 01 марта 2020

Используя glob, я смог отсканировать и объединить все. json файлы. Хотя это и не идеал, он работает по большей части.

<?php
$files = glob("*.json");
$newDataArray = [];
foreach($files as $file){
    $thisData = file_get_contents($file);
    $thisDataArray = json_decode($thisData);
    $newDataArray[] = $thisDataArray;
}
$newDataJSON = json_encode($newDataArray);
file_put_contents("merged.json",$newDataJSON);
?>  
0 голосов
/ 01 марта 2020

Создайте файл .php и вызовите этот файл. В этом файле используются методы php для загрузки всех файлов, начиная, скажем, со слова json из указанного каталога. Это позволит вам в 1 запросе загрузить все файлы обратно.

Как пример, это даст хорошую отправную точку:

/**

 * load all site-wide jscript_*.js files from includes/jscript, alphabetically

 */

  $directory_array = $template->get_template_part($template->get_template_dir('.js',DIR_WS_TEMPLATE, $current_page_base,'jscript'), '/^jscript_/', '.js');

  while(list ($key, $value) = each($directory_array)) {

    echo '<script type="text/javascript" src="' .  $template->get_template_dir('.js',DIR_WS_TEMPLATE, $current_page_base,'jscript') . '/' . $value . '"></script>'."\n";

  }

// Загрузка всех файлов JS, и вот Основные функции:

function get_template_part($page_directory, $template_part, $file_extension = '.php') {
    $directory_array = array();
    if ($dir = @dir($page_directory)) {
      while ($file = $dir->read()) {
        if (!is_dir($page_directory . $file)) {
          if (substr($file, strrpos($file, '.')) == $file_extension && preg_match($template_part, $file)) {
            $directory_array[] = $file;
          }
        }
      }

      sort($directory_array);
      $dir->close();
    }
    return $directory_array;
  }

  function get_template_dir($template_code, $current_template, $current_page, $template_dir, $debug=false) {
    //  echo 'template_default/' . $template_dir . '=' . $template_code;
    if ($this->file_exists($current_template . $current_page, $template_code)) {
      return $current_template . $current_page . '/';
    } elseif ($this->file_exists(DIR_WS_TEMPLATES . 'template_default/' . $current_page, preg_replace('/\//', '', $template_code), $debug)) {
      return DIR_WS_TEMPLATES . 'template_default/' . $current_page;
    } elseif ($this->file_exists($current_template . $template_dir, preg_replace('/\//', '', $template_code), $debug)) {
      return $current_template . $template_dir;
    } else {
      return DIR_WS_TEMPLATES . 'template_default/' . $template_dir;
      //        return $current_template . $template_dir;
    }
  }

  function file_exists($file_dir, $file_pattern, $debug=false) {
    $file_found = false;
    $file_pattern = '/'.str_replace("/", "\/", $file_pattern).'$/';
    if ($mydir = @dir($file_dir)) {
      while ($file = $mydir->read()) {
        if (preg_match($file_pattern, $file)) {
          $file_found = true;
          break;
        }
      }
      $mydir->close();
    }
    return $file_found;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...