使用 RNFS 在本机反应上读取 Json 文件

Posted

技术标签:

【中文标题】使用 RNFS 在本机反应上读取 Json 文件【英文标题】:Reading Json file with RNFS on react native 【发布时间】:2018-09-21 02:01:03 【问题描述】:

我正在尝试访问我刚刚使用 RNFS 编写的 JSON 文件的内容。 我尝试了不同的方法,导入、json-loader 等都没有成功。

我这样写文件:

    var obj = 
    date: moment().format(),
    counter: 0 ;
    var json = JSON.stringify(obj);
    RNFS.writeFile(path, json, 'utf8')
    .then((success) => 
      count++;
      console.log('FILE WRITTEN! : ');
    )
    .catch((err) => 
        console.log(err.message);
    );

然后我继续尝试阅读它

var path = RNFS.DocumentDirectoryPath + '/test.json';

const cFile = RNFS.readFile(path, 'utf8');

遗憾的是,我只得到了“承诺”,但似乎无法直接访问数据。 我在控制台中得到了这种结果。

Promise _40: 0, _65: 0, _55: null, _72: null
_40:0
_55:""date":"2018-04-11T10:52:52+02:00","counter":0"
_65:1
_72:null
__proto__:Object

我想访问日期字段,就像 cFile.date 一样

欢迎任何帮助,谢谢

【问题讨论】:

【参考方案1】:

这是您从 readFile 调用中获得的 Promise。你需要像这样调用'then':

RNFS.readFile(path, 'utf8')
    .then((contents) => 
    // log the file contents
    console.log(contents);
  )
  .catch((err) => 
    console.log(err.message, err.code);
  );

【讨论】:

【参考方案2】:

试试这个:

let asset_content = null;
try 
    await RNFetchBlob.fs.readFile(path, 'utf8')
      .then((data) => 
        asset_content = data;
        console.log("got data: ", data);
      )
      .catch((e) => 
        console.error("got error: ", e);
      )
   catch (err) 
    console.log('ERROR:', err);

const assets = JSON.parse(asset_content);

【讨论】:

以上是关于使用 RNFS 在本机反应上读取 Json 文件的主要内容,如果未能解决你的问题,请参考以下文章

我无法使用 RNFS 使用从 RNCameraRoll 获取的 phasset 读取文件

无法在本机反应中使用 fetch 执行 POST 请求

反应本机应用程序 - 出现错误 app.js 无法读取未定义的属性“文件名”

将反应应用程序与反应本机应用程序合并

如何在本机反应中从 json 获取数据?

无法在本机反应上构建 APK