我正在嘗試使用JavaScript和jQuery來讀取本地JSON文件,並創建一個鍵/值對的字典,以便以後可以迭代設置幾個下拉列表的選定值。如何讀取JSON文件並將鍵/值對加載到字典中
我有一個map.json文件如下;
[
{
"map_recipient_name": "Tax payer Name",
"map_delivery_company_name": null,
"map_delivery_street_address": "Address1",
"map_delivery_apt_suite": "Address2",
"map_delivery_city": "City",
"map_delivery_state": "State",
"map_delivery_zip": "Zip",
"map_delivery_zip_4": "Zip+4",
"map_customer_reference_number": "Notice Number",
"map_notice": null,
"map_recipient_email": null,
"map_send_email": null,
"map_standardize_address": null
}
]
每個鍵都是我選擇的HTML控件之一的ID,該值是指定控件所需的選定值。
我正在使用HTML輸入類型=文件控件來允許用戶選擇本地文件系統上面顯示的map.json文件,並且我正在使用FileReader ReadAsText方法將內容讀取到本地變量中。然後我想將字符串解析爲一個鍵/值對的字典,我將稍後迭代設置一系列Select HTML控件的「Selected」值。
我使用下面的代碼,但它似乎不能成功地將JSON字符串鍵/值對獲取到字典中。
var field_mapping = document.getElementById('fieldmapping')
function read_map_file(e) {
var map_file = e.target.files[0]
if (!map_file) {
return;
}
var dict = {};
var reader = new FileReader();
reader.onload = function (e) {
var json = e.target.result;
var result = JSON.parse(json);
$.each(result, function (key, value) {
alert(key + ' is ' + value);
//dict[key] = value;
});
};
reader.readAsText(map_file);
}
if (field_mapping.addEventListener) field_mapping.addEventListener('change', read_map_file, false);
當我運行這段代碼並選擇map.json文件,我可以看到在調試器的文本字符串時,我檢查線路後,立即JSON變量的值...
var json = e.target.result;
...執行。我可以看到它包含了帶有開始和結尾雙引號的JSON文本(我認爲這是因爲閱讀器的ReadAsText方法)。
當我檢查下一個行...
var result = JSON.parse(json);
...我展開「0:對象」在調試線,我可以看到字符串被解析和鍵/值對似乎是正確的。然而,當警報在代碼的下一節彈出...
$.each(result, function (key, value) {
alert(key + ' is ' + value);
//dict[key] = value;
});
...警告對話框說,「0的翻譯:」
最終我想要做的就是保存這些鍵/值對轉換爲字典變量,以便我可以查詢字典並獲取每個選擇控件的選定值。
這可能很簡單,但我只是沒有看到它。
任何幫助將不勝感激。作爲獎勵,如果任何人有更簡單的方法來讀取本地JSON文件並使用這些值來設置選擇HTML控件的選定值,我很樂意看到它。
在此先感謝您提供的任何幫助。
我很好奇,爲什麼向下票呢?該投票工具提示說:「這個問題沒有顯示任何研究工作;它不清楚或沒有用。」不過,我對此進行了大量的研究,我感覺我所問的很清楚。 – EiEiGuy