8

如何获取本地的大json数据?

我试过这个,但我没有成功:

var sa = require("./shared/resources/sa.json");
var array = new observableArrayModule.ObservableArray(sa);
4

4 回答 4

10

使用file-system模块读取文件,然后解析它JSON.parse()

var fs = require('file-system');

var documents = fs.knownFolders.currentApp();
var jsonFile = documents.getFile('shared/resources/sa.json');
var array;
var jsonData;

jsonFile.readText()
.then(function (content) {
    try {
        jsonData = JSON.parse(content);
        array = new observableArrayModule.ObservableArray(jsonData);
    } catch (err) {
        throw new Error('Could not parse JSON file');
    }
}, function (error) {
    throw new Error('Could not read JSON file');
});

这是我如何在 NativeScript 应用程序中读取 75kb/250 000 个字符的大 JSON 文件的真实示例。

于 2015-09-05T19:36:21.257 回答
5

打字稿:

import {knownFolders} from "tns-core-modules/file-system";

export class Something {
    loadFile() {
        let appFolder = knownFolders.currentApp();
        let cfgFile = appFolder.getFile("config/config.json");
        console.log(cfgFile.readTextSync());
    }
}
于 2017-08-08T03:29:25.817 回答
5

从 TypeScript 2.9.x 及以上版本开始(在 NativeScript 5.xx 中使用 3.1.1 及以上版本),我们现在可以resovleJsonModule使用tsconfig.json. 使用此选项,现在可以将 JSON 文件作为模块导入,并且代码更易于使用、阅读和维护。

例如,我们可以这样做:

import config from "./config.json";

console.log(config.count); // 42
console.log(config.env); // "debug"

我们需要做的就是使用 TypeScript 2.9.x 及更高版本并启用 tsconfig.json 中的属性

// tsconfig.json
{
    "compilerOptions": {
        "module": "commonjs",
        "resolveJsonModule": true,
        "esModuleInterop": true
    }
}

可以在此处找到演示上述内容的示例项目

于 2018-11-20T11:01:57.247 回答
3

我只是想再添加一件事,这可能会更容易。您可以简单地将 JSON 文件的内容写入 data.js 文件或您想使用的任何名称,然后将其导出为数组。然后你可以只需要 data.js 模块。

于 2015-09-08T12:08:30.303 回答