我試圖解析JSON格式的字典列表,以便我可以使用他們的數據創建一組列表項,其中使用此數據生成文本和ID。我通過以下到我的網頁,並在一個隱藏的div積攢它服務之前:如何使用Javascript將字典列表解析爲JSON格式?
[{'text': 'org1', 'id': 'org1ID'},
{'text': 'org2', 'id': 'org2ID'},
{'text': 'org3', 'id': 'org3ID'}]
我做這種方式,因爲數據可以通過執行查找被添加到客戶端上ajax和相同的UI元素將能夠使用基於訂閱的觀察者可觀察模型來查看不同的數據集。
螢火蟲表明它的成功呈現爲:
<div id="selection">[{'text': 'org1', 'id': 'org1ID'},
{'text': 'org2', 'id': 'org2ID'},
{'text': 'org3', 'id': 'org3ID'}]</div>
當我在這個div的內容嘗試JSON.parse()來的問題開始。我得到以下信息:
JSON.parse: expected property name or '}'
如果我刪除JSON.parse()來我得到li元素的列表,但未定義的值,並將它們的數量不匹配,期望之一:
<li id="Undefined">Undefined</> <!-- Repeated a number of times equal to char lengh of div html -->
請注意,如果上面還沒有告訴你,我正在嘗試迭代我的列表並從每個字典中提取信息。
我也對數據試圖JSON.stringify()解析過,但只似乎將數據轉換成字符串,這樣看,當我步:
"[{'text': 'org1', 'id': 'org1ID'}, {'text': 'org2', 'id': 'org2ID'}, {'text': 'org3', 'id': 'org3ID'}]" <!-- The difference is that double qoutes have been injected. -->
爲了使問題更加至少對我來說,至少是令人討厭的是,如果我實際上對這些數據的關聯數組部分進行了硬編碼(就像Javascript會看到的那樣),那麼它就能正常工作。然而,爲了做到這一點,我必須妥協我當前設計的很多靈活性。除了更多的客戶端處理外,最突出的缺點是無法將我的數據結構從服務器傳回。
任何人都可以提供一些見解,或者我可能忽略的解決方案?這是js中使用JSON的常見問題嗎?
UPDATE
我發現,之所以硬編碼原理不同的是,Python或Jinja2的是將我的數據結構使用單引號代替雙,但進入它在客戶端上繞過蟒蛇。在這一點上,我相信它是python在日食中顯示單引號列表的字典。
加上它甚至可以用單引號工作。 –
如果我刪除JSON.parse和JSON.stringify語句並遍歷集合,它仍將它視爲一個字符串,因此它將依次遍歷每個字符。我將它存儲在div中,然後在js中使用:$('div').html()有什麼我需要做的,以阻止這是一個字符串? – Nickel
是的。不要輸出到HTML。如答案中所述,將其直接輸出到一個javascript變量中。 –