从javascript中获取/构造静态本地文件系统json内容的最佳方法

Best way to get/structure statical local file system json content from javascript

本文关键字:json 文件系统 方法 最佳 获取 javascript 静态      更新时间:2023-09-26

我正在制作一个简单的javascript应用程序,需要在本地运行(在没有互联网的CD上),它基本上是一个增强的图片库。有很多文件需要"加载",所以我把文件放在json格式,像这样:

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

我的问题是,我如何获得和构建这些数据?是否有一个Jquery getJSON本地方法/解析器?似乎我可以重新解析json使用javascript eval,但我怎么能得到的内容??此外,是否有一种方法可以找到有关给定结构数据的信息,例如,假设我想要来自"巴西"的所有图片。

我想嵌入一个php服务器和阅读,但我认为这是太麻烦.....

如果只是处理CD,为什么不更进一步,将JSON数据结构赋值给JavaScript变量,直接跳过JSON呢?你可以这样做:

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

那么你不需要解析任何东西,浏览器的JavaScript引擎会为你做解析。

为了解决使用jquery直接从磁盘读取json的问题,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);
    }
});

也许你应该缓存所有的文件在不同的结构化json文件(全部来自巴西…),因为这并不重要,如果你找到一个函数,将实现你正在寻找的,该函数将解析所有的json内容到一个数组,然后输出你需要的。

我的意见是你保存在多个有组织的json文件中,你只加载你需要的,或者你保存在一个文件中,但每次你想要显示的东西,你必须创建一个数组,然后在其中循环