为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 JS 中以人类可读格式打印 JSON 字符串

如何在 JS 中以人类可读格式打印 JSON 字符串

动漫人物 2022-05-26 15:29:05
我有一个 Firebase 实时数据库,它读取传感器数据(每 0.3 秒更新一次)并将其显示在我的网页上。在做了一些研究后,我发现了“漂亮的印刷”。但是,这不是我所追求的格式。我现在的数据显示如下:{"Moisture":619}。我正在寻找的是:水分:619。到目前为止,每次更新数据库中的值时,此代码也会创建一个新的 {"Moisture":619}。理想的情况是更新新值,使其仅在水分之后更改值,而不是再次显示整个内容。我的代码:<!DOCTYPE html><html>  <head>    <meta charset="utf-8">    <meta http-equiv="X-UA-Compatible" content="IE=edge">    <meta name="viewport" content="width=device-width, initial-scale=1">    <link rel="stylesheet" href="/styles.css">    <script src="https://www.gstatic.com/firebasejs/4.11.0/firebase-app.js"></script>    <script src="https://www.gstatic.com/firebasejs/4.11.0/firebase-auth.js"></script>    <script src="https://www.gstatic.com/firebasejs/4.11.0/firebase-database.js"></script>    <script src="https://www.gstatic.com/firebasejs/4.11.0/firebase-firestore.js"></script>    <script src="https://www.gstatic.com/firebasejs/4.11.0/firebase-storage.js"></script>    <script src="https://www.gstatic.com/firebasejs/4.11.0/firebase-messaging.js"></script>    <script>      // Initialize Firebase      var config = {        apiKey: "xx",    authDomain: "xx",    databaseURL: "xx",    projectId: "xx",    storageBucket: "xx",    messagingSenderId: "xx",    appId: "xx"      };      firebase.initializeApp(config);    </script>  <script>    var database = firebase.database();    var ref = firebase.database().ref("plant-patrol/Moisture");    ref.once("value")    .then(function(snapshot) {    var key = snapshot.key; // "plant-patrol"    var childKey = snapshot.child().key; // "Moisture"    });  </script><script>    var ref = firebase.database().ref();ref.on("value", function(snapshot) {   console.log(snapshot.val());    var snapshotJSON = JSON.stringify(snapshot.val());    var moisture = snapshotJSON;    document.write(moisture);}, function (error) {   console.log("Error: " + error.code);});    </script>      <script src="/script.js" defer></script>  </head></html>
查看完整描述

3 回答

?
森栏

TA贡献1810条经验 获得超5个赞

您可以使用 pre 标记来显示格式化的 json。


const json = {

  id: "1",

  employee_name: "Tiger Nixon",

  employee_salary: "320800",

  employee_age: "61",

  profile_image: ""

};

document.getElementById("app").innerHTML = JSON.stringify(json, (key, value) => (value || ''), 4).replace(/"([^"]+)":/g, '$1:');

  <div><pre id="app"></pre></div>


查看完整回答
反对 回复 2022-05-26
?
守着一只汪

TA贡献1872条经验 获得超3个赞

您可以使用 JSON.stringify 并替换:


const json = {

  id: "1",

  employee_name: "Tiger Nixon",

  employee_salary: "320800",

  employee_age: "61",

  profile_image: ""

};

document.getElementById("app").innerHTML = JSON.stringify(json, (key, value) => (value || ''), 4).replace(/"([^"]+)":/g, '$1:');

const json = {

  id: "1",

  employee_name: "Tiger Nixon",

  employee_salary: "320800",

  employee_age: "61",

  profile_image: ""

};

document.getElementById("app").innerHTML = JSON.stringify(json, (key, value) => (value || ''), 4).replace(/"([^"]+)":/g, '$1:');

  <div id="app"></div>


查看完整回答
反对 回复 2022-05-26
?
繁花如伊

TA贡献2012条经验 获得超12个赞

您可以使用正则表达式删除 []{}"" 字符:

 snapshotJSON.replace(/[\[\]\{\}\"]+/g, '')

但是你已经有了简单的价值

 snapshot.val()

那么为什么不使用它。

 JSON.stringify()

将 javascript 对象转换为 JSON 格式的字符串 - 通常用于机器对机器的通信。相反的是 JSON.parse 将文本转换为 JavaScript 对象。


查看完整回答
反对 回复 2022-05-26
  • 3 回答
  • 0 关注
  • 189 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信