如何获取本地大json数据?
我试过这个,但我没有成功:
foreach($arr_in as $key => $val){
if(in_array($keep, $key))
$temp[$key] = $val;
}
答案 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