在 Nativescript 中从本地 PC 加载 JSON 文件

Load JSON file from local PC in Nativescript

所以我无法使用控制台 commands.I 在 nativescript 中显示我的 JSON 文件的内容基本上想显示这些内容并使用文件中的值来执行一些附加功能。

这是我根据 NS 文档和 Emil Oberg 在不同 post

上的解决方案稍微重写的 JS 函数
    var fs = require('file-system');
    var documents = fs.knownFolders.documents();
    var jsonFile = documents.getFile('/Users/student/Desktop/Native_Script/Library/app/images/status.json');
    var array;
    var jsonData;


    //console.log('Item:' +jsonFile);

    jsonFile.readText()
    .then(function (content)
     {
        try {
        jsonData = JSON.parse(content);
        //console.log('Item:' + JSON.stringify(jsonData));
        array = new observableArrayModule.ObservableArray(jsonData);
    }   
    catch (err) {
       console.log(err);
}
console.log('Item:' +JSON.stringify(jsonData));

    });

////////////////

JSON File:
[{
    "Status": "3",
    "Trend": "increase",
    "Space": "Gleason"
}, {
    "Status": "2",
    "Trend": "decrease",
    "Space": "PRR"
}, {
    "Status": "4",
    "Trend": "stable",
    "Space": "WBR"
}, {
    "Status": "1",
    "Trend": "decrease",
    "Space": "HCR"
}]

所以有人可以告诉我哪里出了问题以及我将如何在控制台中显示文件的任何组件。我基本上想使用文件中的一个值,比如状态,来调用另一个函数。

所以类似于:(伪代码)

status.getvalue .then(函数) 如果状态 > 3 console.log(地方很拥挤)

好的,现在您正在尝试从设备 (iPhone/Android/Emulator/etc) 读取计算机上的文件。这根本不可行。 getFile 调用需要设备上的路径

所以,要么:

  1. 将 JSON 文件存储在设备上,或
  2. 只是 require() JSON 文件。例如。 var jsonFile = require('status.json') 系统会为您读取和解析它。

添加类似下面的代码,可能是您的 jsonFile.readText() 抛出错误

p1.then(function(value) {
  console.log(value); // "Success!"
  throw 'oh, no!';
}).catch(function(e) {
  console.log(e); // "oh, no!"
})

jsonFile.readText()
    .then(function (content)
      {
        try {
        jsonData = JSON.parse(content);
        //console.log('Item:' + JSON.stringify(jsonData));
        array = new observableArrayModule.ObservableArray(jsonData);
       }   
       catch (err) {
       console.log(err);
       }
       console.log('Item:' +JSON.stringify(jsonData));    
   })
  .catch(function(e) {
      console.log(e); // "oh, no!"
    });