【问题标题】:Get-Json form local file从本地文件获取 Json
【发布时间】:2019-07-29 10:04:01
【问题描述】:

我正在使用小型服务器(NodeJS 环境)从 URL 和本地文件获取 JSON 数据以比较这些数据。

不幸的是,我正在使用“get-json”从 url 加载 JSON 并获取一些值 它不适用于本地文件。

我也用“请求”尝试过。

var getJSON = require('get-json')
var localpath = "./location/file.json"

getJSON(localpath, function(data, allowed_content) {
  var a = allowed_content[0].age;
  var b = allowed_content[1].age;
  var c = allowed_content[2].age;
  var d = allowed_content[5].age;
  var e = allowed_content[6].age;
});

我无法弄清楚为什么本地路径不起作用。

【问题讨论】:

标签: javascript getjson


【解决方案1】:

你可以简单地使用fetch函数

var localpath = "./location/file.json"
    fetch(localpath)
    .then(response => response.json())
    .then(json => {
      console.log(json);
    }); 

【讨论】:

    【解决方案2】:

    tl;dr 不要使用get-json 来读取本地文件,而是使用readFile

    get-json 用于网络请求,它的文档说它在节点中环绕requests,并在浏览器上使用 JSONP。 要读取本地文件,只需使用 readFilereadFileSync

    var { readFileSync } = require("fs");
    var localPath = "";
    var localFile = readFileSync(localPath, "utf8"); // utf8 is opts and depends on your setup, the async version of readFile takes a callback as last argument
    console.log(JSON.parse(localFile));
    

    【讨论】:

    • 它正在工作,现在我需要弄清楚如何从值中获取特定值。比如“allowed_content[6].age”
    • 不确定我是否关注你。在字符串上调用 JSON.parse 应该返回一个 JS 对象(或抛出错误)。将输出命名为allowed_content,您可以使用常规语法访问其所有属性
    • 我的意思是,我需要 JSON 文件中的特定值。我会试着弄清楚。再次感谢您的帮助!
    • 啊,祝你好运。如果您有内存限制问题,您可能会对oboejs.com 感兴趣,这是一个 json 流媒体库。如果我的回答OK,你能接受吗?
    【解决方案3】:

    解决方案其实很简单:

    var myvar = require('./filepath/myfile.json');
    var a = myvar[0].age;
    var b = myvar[1].age;
    var c = myvar[2].age;
    var d = myvar[5].age;
    var e = myvar[6].age;
    

    【讨论】:

      猜你喜欢
      • 2020-03-24
      • 2018-03-29
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      • 2012-09-30
      • 2018-05-13
      • 2019-03-05
      • 1970-01-01
      相关资源
      最近更新 更多