js获取JSON文件中内容

文章介绍了如何使用JavaScript的FileReaderAPI读取JSON文件内容,处理尾随逗号的问题,以及如何通过Promise和async/await来异步获取数据。提供的方法包括使用正则移除多余逗号,以及封装获取JSON数据的函数。
摘要由CSDN通过智能技术生成

 1. js获取json文件中内容

const fileReader = new FileReader()
fileReader.onload = async function () {
  console.log(this.result, 'json文本内容')
}
fileReader.readAsText(file)

 2. 从最后一个对象中删除尾随符号

若JSON文件格式如下:

[
  {
    "key1": "key1",
    "desc": "desc1",
  },
],

desc后、}后、]后都存在逗号,直接使用JSON.parse解析会报错,需要去除掉尾随逗号,方法如下: 

const regex = /\,(?!\s*?[\{\[\"\'\w])/g
const jsonStr = jsonVal.replace(regex, '') 

3. onload为异步方法,使用new Promise封装,可使用async await/Promise().then()获取数据

const getJsonData = (file) => {
  return new Promise(function (resolve, reject) {
    let reader = new FileReader()
    reader.readAsText(file)
    reader.onload = function () {
     resolve(this.result)
    }
  })
}

4. 结合以上方法,封装获取JSON文件中数据方法如下:

const getJsonData = (file) => {
  return new Promise(function (resolve, reject) {
    let reader = new FileReader()
    reader.readAsText(file)
    reader.onload = function () {
      const jsonVal = typeof this.result === 'string' ? this.result : ''
      const regex = /\,(?!\s*?[\{\[\"\'\w])/g
      const jsonStr = jsonVal.replace(regex, '')
      if (jsonStr) {
        try {
          const toObj = JSON.parse(jsonStr)
          resolve(toObj)
        } catch {
          reject()
        }
      }
    }
  })
}

使用的时候:

(async ()=>{
    const data = getJsonData(file)
    console.log(data)
})();

getJsonData(file).then(data=>{
    console.log(data)
})

这些都是不同的数据格式,用于在不同的场景存储和交换数据。下面是它们的区别和示例: 1. JSONJavaScript Object Notation):是一种轻量级的数据交换格式,易于阅读和编写。它使用键值对的方式组织数据,并支持嵌套结构。JSON常用于Web应用程序数据传输和存储。 示例: ```json { "name": "John", "age": 30, "city": "New York" } ``` 2. OGG-JSON:是一种嵌套的JSON格式,常用于存储音频文件的元数据信息。 示例: ```json { "title": "Song Title", "artist": "Artist Name", "duration": 180, "album": { "title": "Album Title", "year": 2021 } } ``` 3. Chunjun-JSON:这可能是一个自定义的或特定领域的JSON格式,没有明确的定义或广泛使用。 示例: ```json { "property1": "value1", "property2": "value2" } ``` 4. CSV(Comma-Separated Values):是一种纯文本格式,用逗号分隔字段。它通常用于存储表格数据,每行表示一个记录,每列表示一个字段。 示例: ``` name, age, city John, 30, New York Alice, 25, London ``` 5. Avro:是一种二进制数据序列化格式,用于高效地存储和传输大数据集。它定义了数据的结构和架构,并支持动态类型和架构演化。 示例: ```json { "type": "record", "name": "Person", "fields": [ {"name": "name", "type": "string"}, {"name": "age", "type": "int"}, {"name": "city", "type": "string"} ] } ``` 这些数据格式在不同的场景有各自的优势和适用性。选择合适的格式取决于数据的结构、用途以及所使用的技术栈。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值