我是 JS 和 JSON 的新手,正在尝试了解它们之间的区别,我看到了其他关于这种区别的帖子,但仍然有一些 Unresolved 问题,
我创建了 3 个对象
- 双引号中的键值对
- 键不带引号但值带引号
- 单引号中的键值对。
问题。
- Asis,假设这 3 个对象都是 Javascript 对象是否安全?
- 我如何在这里确定哪个是 JSON 对象,当我在日志中打印对象时,所有对象看起来都一样。有没有办法确定 JSON 对象?
- 如果 JSON 对象 - 键值对用双引号括起来,单引号是什么意思?
代码:
<html>
<head>
<script>
var jsobject = {"fname":"Bob","lname":"Mike"}
console.log(jsobject)
var jsobject = {fname:"Bob",lname:"Mike"}
console.log(jsobject)
var jsobject = {'fname':'Bob','lname':'Mike'}
console.log(jsobject)
</script>
</head>
<body>
</body>
</html>
我认为您混淆了语法和数据。
许多技术都可以具有非常相似的语法,但相似的语法可能用于完全不同的目的,并用于创建截然不同的数据。
当我们谈论 JSON 时,我们谈论的是具有 Unicode 编码的文本数据,该编码遵循旨在用作数据传输机制的字符语法。 JSON 数据可以传输到各种不同的编程环境中,进行解析,然后转换为对环境有意义的实际对象结构。
之所以将其命名为“JavaScript 对象表示法”,是因为它的表示法主要是仿照 JavaScript 程序中用于创建对象和原始值的文字语法的子集 模式化的。遗憾的是,这种命名方式让 JavaScript 开发人员感到困惑。
因此,要确定您是否正在处理 JSON,最终要考虑的最重要的事情是您正在做的事情是否会导致创建遵循 JSON 语法规则的 Unicode 数据。
举个例子:
var foo = {"bar":"baz"};
那是 JSON 吗?好吧,如果它在 JavaScript 程序中运行,它将被评估,并且 foo
将持有对一些非 Unicode 文本数据的内存的引用。
当然,我们可以隔离代码的 {"bar":"baz"}
部分,并将其传输到自己的编码为 Unicode 的文本文件中,但我们真的不能不再处理同一个例子。
假设我们做到了。我们打开我们的文本编辑器,确保它设置为 Unicode 编码,然后粘贴上面代码的那一部分。所以现在我们的整个文本文件是这样的:
{"bar":"baz"}
现在我们可以正确地说我们有 JSON 数据。如果我在末尾添加一个 ;
会怎么样?
{"bar":"baz"};
它不再是 JSON,因为它已被 ;
损坏,这是不允许的。同样,我们可以将它称为 JSON except 来表示任何无效的内容,但实际上它要么是有效的,要么是无效的。
回到 JavaScript 示例。在 JavaScript 程序的语法中引用 JSON 是否有意义?以我们原来的例子为例。如果我们可以使用一些 JavaScript 语法来创建 Unicode 数据并使其符合 JSON 语法,那么是的,我们可以正确地说在我们的程序中使用 JSON。
那么 JavaScript 让我们创建 Unicode 数据吗?是的,JavaScript 中的所有字符串都是 UTF-16 编码的。因此,我们需要做的就是创建一个字符串。
var foo = '{"bar":"baz"}';
现在我们不会将整行称为 JSON,但我们可以正确地说 foo
变量指的是保存 JSON 数据的内存。
然后我们可以将该数据传输到用完全不同的编程语言编写的服务器,只要它有 JSON 解析器,它就可以解析它,并将其转换为对该服务器有意义的任何对象类型。