我是最近自學的JavaScript & JSON啓動。這個demi-project是我第二個JavaScript項目的一部分。請對我溫柔。在JavaScript和JSON中,爲什麼是str = JSON.stringify(obj)的結果;等於 {}?
我正在嘗試輸入一個JSON文件,將其字符串化並輸出結果字符串。該文件是一個JavaScript對象。但是當我執行語句str = JSON.stringify(obj);
時,我得到的結果是str === {}
。
爲什麼字符串化的文件對象等於{}?我怎樣才能得到它是一個字符串等於JSON文件字符串化?
的JavaScript是:
function handleFileSelect(evt) {
var files = evt.target.files; // FileList object
// files is a FileList of File objects. List some properties.
var output = [];
for (var i = 0, f; f = files[i]; i++) {
output.push('<li><strong>', escape(f.name), '</strong> (', f.type || 'n/a',
') - ', f.size, ' bytes, last modified: ' f.lastModifiedDate ?
f.lastModifiedDate.toLocaleDateString() : 'n/a', '</li>');
}
document.getElementById('OutputArea').innerHTML = '<ul>' +
output.join('') + '</ul>';
var obj = files[0];
var str = JSON.stringify(obj);
document.getElementById('OutputArea').innerHTML += "obj : " +
obj + "<br><br>obj stringified : " + str;
} // end def fn handleFileSelect
// set event listener on InputArea
document.getElementById('InputArea').addEventListener('change',
handleFileSelect, false);
的HTML是:
<html lan="en">
<head>
<title="A JSON exercise"></title>
</head>
<body>
<input id="InputArea" name="files[]" type="file" accept="application/json"
multiple />
<output id="OutputArea"</output>
</body>
</html>
中的JavaScript相關的輸出是:
obj: [object File]
object stringified : {}
JSON文件,在BBEdit中的Mac組成並保存爲Unicode(UTF-8)文件,爲:
{
"FHC-Class-Schedule" : [
{
"time" : "0830",
"room" : "A-I",
"classTitle" :
"Keynote Address",
"classDescription" :
"Room I [content to come]",
"instructorName" : "Crista Cowen",
"instructorGender" : "female",
"instructorBio" :
"Crista Cowan has been employed by Ancestry.com since 2004.",
"instructorImgHref" :
""
}
]
}
在CodePen有一支筆:A JSON Exercise。您將需要一個本地JSON文件來輸入。
任何幫助將非常感激
編輯01:
OK,我重新格式化的JSON文件,並與在線JSON驗證器(Free Online JSON Formatter)驗證它。我仍然得到相同的結果。 (我還插了新的第一段)
您的JSON無效 –
JSON僅適用於**普通對象** – hindmost
@ behindmost:並非如此。只要該對象具有帶有字符串名稱和適當值的自己的可枚舉屬性,無論它是「普通」對象還是主機提供的對象或... –