Лучший способ получить / структурировать содержимое json статической локальной файловой системы из javascript - PullRequest
0 голосов
/ 18 июля 2011

Я делаю простое приложение javascript, которое должно работать локально (на компакт-диске без Интернета), и это в основном расширенная галерея изображений. Есть много файлов, которые нужно «загрузить», поэтому я помещаю файлы в формат json, например:

{
     number: 338,
     images: 
     [
       {
          picture_path : "path/file.png",
          place : "Brazil",
          metadata : "...",
       },
       {
          ...
       }
     ]
}

Мой вопрос: как я могу получить и структурировать эти данные? Есть ли в Jquery getJSON локально метод / парсер? Кажется, что я могу повторно обработать JSON с помощью Javascript Eval, но как я могу получить содержимое ?? Кроме того, есть ли способ найти информацию о данных структуры данных, например, предположим, что мне нужны все изображения из "Бразилии".

Я думал о встраивании php-сервера и чтении, но я подумал, что это слишком много проблем .....

Ответы [ 3 ]

2 голосов
/ 18 июля 2011

Если вы имеете дело только с компакт-диском, то почему бы не сделать еще один маленький шаг, а просто присвоить свою структуру данных JSON-ish переменной JavaScript и вообще пропустить JSON? Вы могли бы просто сделать это:

var IMAGES = {
     number: 338,
     images: 
     [
       {
          picture_path : "path/file.png",
          place : "Brazil",
          metadata : "...",
       },
       {
          ...
       }
     ]
};

Тогда вам не нужно ничего разбирать, JavaScript-движок браузера сделает за вас анализ.

1 голос
/ 18 июля 2011

Чтобы решить вопрос о чтении json напрямую с диска с помощью jquery, getJSON поддерживает это; из их документации на http://api.jquery.com/jQuery.getJSON/

$.getJSON('data/images.json', function(data) {

    // you asked a question regarding retrieving all images from place === "Brazil"
    // so we'll store said images in this array
    var picturesFromBrazil = new Array();

    // you want to iterate through the array of images, so we're reference them here
    var images = val.images; 


    // iterate through your images array
    $.each(images, function(key, val) {

    // your data, as described, is an array, where each element is a dictionary
    /*
    {
         number: 338,
         images: 
         [
           {
              picture_path : "path/file.png",
              place : "Brazil",
              metadata : "...",
           },
           {
              ...
           }
         ]
    }
    */

    // question: is there a way to find info on the given structure data, for instance,
    // support that I want all pictures from "Brazil"

    if (val.place === "Brazil" && val.picture_path !== undefined) {
        picturesFromBrazil.push(val.picture_path);
    }
});
1 голос
/ 18 июля 2011

Возможно, вам следует кэшировать все файлы в различных структурированных файлах json (все из Бразилии ...), так как это не имеет значения, если вы найдете функцию, которая достигнет того, что вы ищете, эта функция проанализирует все jsonсодержимое в массив, а затем вывести то, что вам нужно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...