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

时间:2016-07-13 14:57:00

标签: javascript json nativescript

所以我无法使用控制台命令在nativescript中显示我的JSON文件的内容。我基本上想要显示这些内容并使用文件中的值来执行一些其他功能。

这是我在NS文档和Emil Oberg的解决方案上稍微重写的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,来调用另一个函数。

类似于:(伪代码)

status.getvalue 。然后(功能) 如果状态> 3 console.log(地方很拥挤)

2 个答案:

答案 0 :(得分:1)

好的,所以你在这里尝试从设备(iPhone / Android / Emulator /等)读取计算机上的文件。这根本不可行。 getFile调用期望设备上的路径

所以,要么:

  1. 将JSON文件存储在设备上,或
  2. 只需require() JSON文件。例如。 var jsonFile = require('status.json')它会被你阅读和解析。

答案 1 :(得分:0)

添加类似下面的代码,可能是你的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!"
    });