猿问

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

我有一个 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>


动漫人物
浏览 190回答 3
3回答

森栏

您可以使用 pre 标记来显示格式化的 json。const json = {&nbsp; id: "1",&nbsp; employee_name: "Tiger Nixon",&nbsp; employee_salary: "320800",&nbsp; employee_age: "61",&nbsp; profile_image: ""};document.getElementById("app").innerHTML = JSON.stringify(json, (key, value) => (value || ''), 4).replace(/"([^"]+)":/g, '$1:');&nbsp; <div><pre id="app"></pre></div>

守着一只汪

您可以使用 JSON.stringify 并替换:const json = {&nbsp; id: "1",&nbsp; employee_name: "Tiger Nixon",&nbsp; employee_salary: "320800",&nbsp; employee_age: "61",&nbsp; profile_image: ""};document.getElementById("app").innerHTML = JSON.stringify(json, (key, value) => (value || ''), 4).replace(/"([^"]+)":/g, '$1:');const json = {&nbsp; id: "1",&nbsp; employee_name: "Tiger Nixon",&nbsp; employee_salary: "320800",&nbsp; employee_age: "61",&nbsp; profile_image: ""};document.getElementById("app").innerHTML = JSON.stringify(json, (key, value) => (value || ''), 4).replace(/"([^"]+)":/g, '$1:');&nbsp; <div id="app"></div>

繁花如伊

您可以使用正则表达式删除 []{}"" 字符:&nbsp;snapshotJSON.replace(/[\[\]\{\}\"]+/g,&nbsp;'')但是你已经有了简单的价值&nbsp;snapshot.val()那么为什么不使用它。&nbsp;JSON.stringify()将 javascript 对象转换为 JSON 格式的字符串 - 通常用于机器对机器的通信。相反的是 JSON.parse 将文本转换为 JavaScript 对象。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答