JavaScript读取写入json文件

JSON 全称为“JavaScript Object Notation”,是当前最流行的一种轻量级的数据交换格式,用来存储和传输数据,通常服务器端与客户端在进行交互时就是使用 JSON 格式的数据。

通俗一点理解就是json在被JavaScript读取到内存当中之后,可以像JavaScript使用变量一样使用json中的内容。

读取并解析json文件

JavaScript提供了eval()JSON.parse()两种方法来解析json文件。通常我们不去使用eval()方法,因为他会执行json文件中的代码,存在非常大的安全风险,尤其是解析第三方json文件的时候。

所以一般会使用JSON.parse()方法来解析json文件

根据文档中的方读取一个json文件,然后输出内容

const fs = require('fs')

fs.readFile('config.json', 'utf8', (err, data) => {
  if (err) {
    console.error(err);
    return
  }
  console.log(data)
  
})

尝试使用JSON.parse()方法解析json文件

const fs = require('fs')

fs.readFile('config.json', 'utf8', (err, data) => {
  if (err) {
    console.error(err);
    return
  }
  console.log(data)

  let obj = JSON.parse(data)

  console.log(obj["telemetry.machineId"])

  console.log(obj.windowSplash.baseTheme)
  console.log(obj.windowSplash.colorInfo.foreground)
})

Success

写入json文件

尝试修改json文件的内容

  obj.windowSplash.colorInfo.foreground = "#FFFFFF";
  obj.windowSplash.baseTheme = "vs-light";

使用JSON.stringify()方法将变量转换为json文本,再写入文本

const fs = require('fs');

fs.readFile('config.json', 'utf8', (err, data) => {
  if (err) {
    console.error(err);
    return;
  }
  // console.log(data)

  let obj = JSON.parse(data);

  console.log(obj["telemetry.machineId"]);

  console.log(obj.windowSplash.baseTheme);
  console.log(obj.windowSplash.colorInfo.foreground);
  obj.windowSplash.colorInfo.foreground = "#FFFFFF";
  obj.windowSplash.baseTheme = "vs-light";

  obj = JSON.stringify(obj);
  fs.writeFile('config.json', obj, err => {
    if (err) {
      console.error(err);
      return;
    }
    
  })
})

Success!!!

这一种方法,将json读取到内存之后,虽然只进行了少许修改,但在写入的时候却将整个文件进行覆写,不知道这样会不会带来一些弊端。

JSON 和 JavaScript 是什么关系? JSON 和 JavaScript 的区别有哪些? – 简书 (jianshu.com)

JS解析JSON (biancheng.net)

javascript解析json格式的数据_mystery的博客-CSDN博客_js解析json

Reading files with Node.js (nodejs.dev)

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

评论

  1. q
    2 年前
    2022-5-14 15:58:29

    666

  2. 1 周前
    2024-5-11 9:28:10

    I don’t think the title of your article matches the content lol. Just kidding, mainly because I had some doubts after reading the article.

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇