[英]How to get values from JSON object
我有一個字符串,其中包含我想使用的值。 我正在使用 $.parseJSON 將此字符串解析為 JSON 對象。 但是,我在獲取實際值時遇到了問題。
在這種情況下,我試圖獲取鍵“textarea1”的值,即“banana”。 獲取值的正確語法是什么。 我試過 obj.texts.textarea1,但沒有用。
字符串如下所示:
var obj = "[{\"texts\":[{\"default\":true,\"bread-texts\":false,\"textarea1\":\"Banana\",\"textarea2\":\"Kiwi\",\"textarea3\":\Apple\",\"textarea4\":\"coffe\",\"textarea5\":\"Tea\",\"signature\":true,\"profile\":\"header\",\"fontsize\":\"26\",\"fontsize-headers\":\"10.5\",\"fontcolor\":\"#0000\",\"textfont\":\"header-large\",\"textsub1\":\"Bold\",\"font\":\"ICA%20Text\",\"textsub\":\"Regular\",\"textsize\":\"20\",\"textsize-signature\":\"9.5\",\"textsizesmall\":\"5.5\",\"textsizesmall-placer\":\"2.75\",\"vers-placer\":\"false\",\"text-colored\":\"%23000000\",\"s-all-customers\":true,\"new-customers\":true,\"undefined\":\"\"}]}]";
腳本:
var oldVal = $.parseJSON(obj);
第一個選項您無需更改任何內容。 只需以正確的格式修復您的 JSON。
您可以使用JsonLint來檢查您的JSON
是否正確。 然后繼續。
var obj = "[{\"texts\":[{\"default\":true,\"bread-texts\":false,\"textarea1\":\"Banana\",\"textarea2\":\"Kiwi\",\"textarea3\":\"Apple\",\"textarea4\":\"coffe\",\"textarea5\":\"Tea\",\"signature\":true,\"profile\":\"header\",\"fontsize\":\"26\",\"fontsize-headers\":\"10.5\",\"fontcolor\":\"#0000\",\"textfont\":\"header-large\",\"textsub1\":\"Bold\",\"font\":\"ICA%20Text\",\"textsub\":\"Regular\",\"textsize\":\"20\",\"textsize-signature\":\"9.5\",\"textsizesmall\":\"5.5\",\"textsizesmall-placer\":\"2.75\",\"vers-placer\":\"false\",\"text-colored\":\"%23000000\",\"s-all-customers\":true,\"new-customers\":true,\"undefined\":\"\"}]}]";
var oldVal = JSON.parse(obj);
alert(oldVal[0].texts[0].textarea1)
第二個選項
如果你想得到像obj.texts.textarea1
這樣的結果,那么你必須改變你的數據如下。
格式化您的 JSON 從您的 json 中刪除所有[
和]
。 然后做。
var a = '{"texts": {"default": true,"bread-texts": false,"textarea1": "Banana","textarea2": "Kiwi","textarea3": "Apple","textarea4": "coffe","textarea5": "Tea","signature": true,"profile": "header","fontsize": "26","fontsize-headers": "10.5","fontcolor": "#0000","textfont": "header-large","textsub1": "Bold","font": "ICA%20Text","textsub": "Regular","textsize": "20","textsize-signature": "9.5","textsizesmall": "5.5","textsizesmall-placer": "2.75","vers-placer": "false","text-colored": "%23000000","s-all-customers": true,"new-customers": true,"undefined": ""} }';
var obj = JSON.parse(a);
然后
obj.texts.textarea1
;
您已經在JSON
創建了數組,因此您需要進行數組訪問。
var obj = "[{\\"texts\\":[{\\"default\\":true,\\"bread-texts\\":false,\\"textarea1\\":\\"Banana\\",\\"textarea2\\":\\"Kiwi\\",\\"textarea3\\":\\"Apple\\",\\"textarea4\\":\\"coffe\\",\\"textarea5\\":\\"Tea\\",\\"signature\\":true,\\"profile\\":\\"header\\",\\"fontsize\\":\\"26\\",\\"fontsize-headers\\":\\"10.5\\",\\"fontcolor\\":\\"#0000\\",\\"textfont\\":\\"header-large\\",\\"textsub1\\":\\"Bold\\",\\"font\\":\\"ICA%20Text\\",\\"textsub\\":\\"Regular\\",\\"textsize\\":\\"20\\",\\"textsize-signature\\":\\"9.5\\",\\"textsizesmall\\":\\"5.5\\",\\"textsizesmall-placer\\":\\"2.75\\",\\"vers-placer\\":\\"false\\",\\"text-colored\\":\\"%23000000\\",\\"s-all-customers\\":true,\\"new-customers\\":true,\\"undefined\\":\\"\\"}]}]"; var oldVal = JSON.parse(obj); console.log(oldVal[0].texts[0].textarea1)
如果你想訪問oldVal.texts.textarea1
你需要刪除數組:
var obj = "{\"texts\":{\"default\":true,\"bread-texts\":false,\"textarea1\":\"Banana\",\"textarea2\":\"Kiwi\",\"textarea3\":\"Apple\",\"textarea4\":\"coffe\",\"textarea5\":\"Tea\",\"signature\":true,\"profile\":\"header\",\"fontsize\":\"26\",\"fontsize-headers\":\"10.5\",\"fontcolor\":\"#0000\",\"textfont\":\"header-large\",\"textsub1\":\"Bold\",\"font\":\"ICA%20Text\",\"textsub\":\"Regular\",\"textsize\":\"20\",\"textsize-signature\":\"9.5\",\"textsizesmall\":\"5.5\",\"textsizesmall-placer\":\"2.75\",\"vers-placer\":\"false\",\"text-colored\":\"%23000000\",\"s-all-customers\":true,\"new-customers\":true,\"undefined\":\"\"}}";
obj
是字符串類型。 您不能以obj.texts
形式將其索引為對象。 您正在使用$.parseJSON
解析它,然后使用該調用返回的對象:
var oldVal = $.parseJSON( obj );
var value = oldVal[0].texts[0].textarea1;
您的 JSON 無效。
在這個地方,你錯過了一個報價:
\"textarea3\":\Apple\" (escaped)
"textarea3":Apple" (unescaped)
此時 JSON 解析將失敗。
修正這個錯字后,我可以通過這種方式輕松訪問您的 JSON 項目:
var obj = "[{\\"texts\\":[{\\"default\\":true,\\"bread-texts\\":false,\\"textarea1\\":\\"Banana\\",\\"textarea2\\":\\"Kiwi\\",\\"textarea3\\":\\"Apple\\",\\"textarea4\\":\\"coffe\\",\\"textarea5\\":\\"Tea\\",\\"signature\\":true,\\"profile\\":\\"header\\",\\"fontsize\\":\\"26\\",\\"fontsize-headers\\":\\"10.5\\",\\"fontcolor\\":\\"#0000\\",\\"textfont\\":\\"header-large\\",\\"textsub1\\":\\"Bold\\",\\"font\\":\\"ICA%20Text\\",\\"textsub\\":\\"Regular\\",\\"textsize\\":\\"20\\",\\"textsize-signature\\":\\"9.5\\",\\"textsizesmall\\":\\"5.5\\",\\"textsizesmall-placer\\":\\"2.75\\",\\"vers-placer\\":\\"false\\",\\"text-colored\\":\\"%23000000\\",\\"s-all-customers\\":true,\\"new-customers\\":true,\\"undefined\\":\\"\\"}]}]"; // using JSON.parse document.body.innerHTML = JSON.parse(obj)[0].texts[0].textarea1; // or using jQuery document.body.innerHTML += $.parseJSON(obj)[0].texts[0].textarea1;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.