1

下面是我读取已下载并存储在“TemporaryDirectoryPath”中的 JSON 文件的代码。

var fileName = getFileNameFromUrl(url);
RNFS.downloadFile({
  fromUrl: url,
  toFile: `${RNFS.TemporaryDirectoryPath}/`+fileName
}).promise.then(r => {

  var content = RNFS.readFile(`${RNFS.TemporaryDirectoryPath}/`+fileName, 'utf8');
  console.log(content);

});

我得到一个类型为“Promise”的对象,如下所示

Promise {_40: 0, _65: 0, _55: null, _72: null}
_40: 0
_55: "{"show_explanation":1,"answer_result":2, //More json content will be here}"
_65: 1
_72: null

如何从该 Promise 对象中读取内容?

4

3 回答 3

2

你为什么不直接用“import”来导入它

import AnyName from './pathToYourJSONfile';

我必须在这里写,添加评论的低代表!:/

于 2017-12-15T10:07:14.610 回答
0

我遇到了同样的问题,并设法最终通过以下剪辑获得了内容:

let asset_content = null;
try {
    await RNFetchBlob.fs.readFile(assetFile_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);

您可能还必须确保内容已保存为“utf8”

于 2019-11-27T10:36:20.230 回答
0

你已经知道RNFS.readFile()return Promise

所以你只需要学习如何使用Promise.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then

var fileName = getFileNameFromUrl(url);
RNFS.downloadFile({
  fromUrl: url,
  toFile: `${RNFS.TemporaryDirectoryPath}/` + fileName
})
  .then(r => {
    RNFS.readFile(`${RNFS.TemporaryDirectoryPath}/` + fileName, 'utf8')
      .then(content => {
        console.log(content);
      })
  });
于 2018-12-25T10:15:50.737 回答