【发布时间】:2017-07-21 21:06:02
【问题描述】:
我最近刚开始自学 JavaScript 和 JSON。这个半项目是我第二个 JavaScript 项目的一部分。请对我温柔一点。
我正在尝试输入一个 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 : {}
在 BBEdit for Mac 中编写并保存为 Unicode (UTF-8) 文件的 JSON 文件是:
{
"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:
好的,我重新格式化了 JSON 文件并使用在线 JSON 验证器 (Free Online JSON Formatter) 对其进行了验证。我仍然得到相同的结果。 (我还插入了一个新的第一段。)
【问题讨论】:
-
您的 JSON 无效
-
JSON 仅适用于 普通对象
-
@hindmost:不是真的。只要该对象具有自己的、可枚举的属性以及字符串名称和适当的值,它是“普通”对象还是主机提供的对象或...
标签: javascript json stringify