在NativeScript上获取本地json文件

时间:2015-09-05 14:21:27

标签: json nativescript

如何获取本地大json数据?

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

foreach($arr_in as $key => $val){
    if(in_array($keep, $key))
        $temp[$key] = $val;

}

4 个答案:

答案 0 :(得分:9)

使用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');
});

这里有一个real life example of how I'm doing it in a NativeScript app来读取一个75kb / 250000个字符的大JSON文件。

答案 1 :(得分: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());
    }
}

答案 2 :(得分:2)

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

答案 3 :(得分:2)

从TypeScript 2.9.x及更高版本开始(在NativeScript 5.x.x中使用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
    }
}

可以找到证明上述内容的示例项目here