1

I'am trying to access the content of a JSON file i just wrote with RNFS. I tried different ways, import, json-loader etc without success.

I write the file like :

    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);
    });

Then i proceed to try to read it

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

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

Sadly i only get a 'promise' but can't seem to access directly the data. I get this kind of result in console.

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

And i would like to access the date field, just like cFile.date

Any help welcome thanks you

2 Answers 2

1

It is a Promise that you get from the readFile call. You need to invoke 'then' on it like so:

RNFS.readFile(path, 'utf8')
    .then((contents) => {
    // log the file contents
    console.log(contents);
  })
  .catch((err) => {
    console.log(err.message, err.code);
  });
Sign up to request clarification or add additional context in comments.

Comments

0

try this:

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);

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.