將[object Object]轉換成json對象


這兩天在做中英文雙版的文件,頁面根據語言讀取不同的內容。js模板用的是ejs

json文件:
"components":{
  "pages":{
    "home":{
        "meta":{
          "title":"首頁",
          "keywords":"關鍵字",
          "desc":"描述"
        },
       "title":"登錄失敗",
       "button":"重新登錄"
    }
  }
}

頁面js代碼

let metaTitle = "<%= components.pages.home.meta.title %>"
console.log(metaTitle)
//控制台輸出:首頁 

但是當json文件中數據很多,而又都需要的情況下,顯然不能一條一條賦值,最好是可以將整個對象進行賦值,比如:

let home ="<%= components.pages.home %>"
console.log(home)
//控制台輸出:[object Object]

這種情況下,控制台輸出的是[object Object],看不到具體的內容,於是需要將它轉換成與json文件中格式一致,方便在js中使用

  • JSONObject.fromObject()
let home = "<%= components.pages.home %>"
let homeObj = JSONObject.fromObject(home);
console.log(homeObj)
//ReferenceError: JSONObject is not defined[詳細了解]
  • JSON.stringify()
let home = "<%= components.pages.home %>"
let homeObj = JSON.stringify(home);
console.log(homeObj)
//"[object Object]"
  • JSON.parse()
let home = "<%= components.pages.home %>"
let homeObj = JSON.parse(home);
console.log(homeObj)
//SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data[詳細了解]
  • ps:let home = "<%= components.pages.home %>" 這里的雙引號在解析的時候,會和內部的雙引號行程匹配,所以下一種辦法中,將""改成了''
  • 最后提供一種目前自己代碼使用的辦法
let home = JSON.parse(decodeURI('<%- encodeURI(JSON.stringify(components.pages.home)) %>'))

后來發現並不需要decode和encode

let home = JSON.parse('<%- JSON.stringify(components.pages.home) %>')
      </div>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM