gpt4 book ai didi

javascript - 在 JavaScript 和 JSON 中,为什么 str = JSON.stringify(obj); 的结果是等于 {}?

转载 作者:行者123 更新时间:2023-11-30 09:37:58 25 4
gpt4 key购买 nike

我是一名自学 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.stringify(specMDN)仅包含满足所有以下条件的属性:

  • 它们是自己的属性(不是对象从其原型(prototype)继承的属性)
  • 它们是可枚举属性(例如,出现在for-in 循环中的那种)
  • 他们的名字是字符串(不是符号)
  • 它们的值不是undefined 或函数

您尝试转换为 JSON 的对象似乎只有继承的或不可枚举的属性,和/或其值为 undefined 或函数的属性。


不过,为了以防万一,请注意,files[0] 不会包含从文件中加载的 JSON。 files[0] 只是该文件在 input type="file" 文件列表中的记录。要载入它的内容,您必须使用FileReaderThis answer (of mine)展示了如何做到这一点。阅读后(可能使用 readAsText),您将获得 JSON 字符串(然后可以使用 JSON.parse 将其转换为对象结构)。

关于javascript - 在 JavaScript 和 JSON 中,为什么 str = JSON.stringify(obj); 的结果是等于 {}?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42550344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com