【问题标题】:react-native-fs: How to read json file content?react-native-fs:如何读取 json 文件内容?
【发布时间】:2018-05-29 12:11:03
【问题描述】:

以下是我读取已下载并存储在“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 对象中读取内容?

【问题讨论】:

标签: react-native react-native-fs


【解决方案1】:

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

import AnyName from './pathToYourJSONfile';

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

【讨论】:

  • 文件正在下载并将文件名存储在本地数据库中,稍后我必须读取文件内容并显示。所以我不知道要导入的文件名是什么,可能需要下载多个文件。
  • 等待 ...第一次你从某个服务器下载这个 json 文件并将它的名字保存到 db ? ...而且您需要将其导入您的应用程序?
  • 我没有导入。我必须阅读从 URL 下载的文件的内容。我更新了代码,请参考。
  • 你知道那个文件里有什么吗?并且会一直是相同的内容吗?
  • 不,内容会有所不同。但是内容结构是一样的。这不是一个文件,我需要下载多个文件。并且要下载的文件数量也不是常数。
【解决方案2】:

你已经知道RNFS.readFile()返回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);
      })
  });

【讨论】:

  • 我试过你的建议,但输出仍然是:` { _40: 0, _65: 0, _55: null, _72: null }`
【解决方案3】:

我遇到了同样的问题,并最终通过以下截图获得了内容:

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”

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多