JSON对象与Javascript对象

时间:2013-12-27 18:32:45

标签: javascript json

我是JS和JSON的新手,并试图了解其中的差异,我看到其他线索有这个差异,但仍然没有几个未回答的问题,

我创建了3个对象

  1. 双引号中的键值对
  2. 没有引号的键但带引号的值
  3. 单引号中的键值对。
  4. 问题。

    1. Asis,如果所有3个对象都是Javascript对象,可以安全地假设吗?
    2. 如何确定哪一个是JSON对象,当我在日志中打印对象时,所有对象看起来都相同。有没有办法确定JSON对象?
    3. 如果JSON对象 - 键值对用双引号括起来,单引号是什么意思?
    4. 代码:

      <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>
      

1 个答案:

答案 0 :(得分:2)

我认为你的语法和数据令人困惑。

任何数量的技术都可以使用非常相似的语法,但类似的语法可能会用于完全不同的目的,也可能用于创建截然不同的数据。

当我们谈论JSON时,我们讨论的是具有Unicode编码的文本数据,该编码遵循用作数据传输机制的字符语法。 JSON数据可以传输到各种不同的编程环境中,进行解析,然后转换为对环境有意义的实际对象结构。

它被命名为“JavaScript Object Notation”的原因是它的符号主要是在JavaScript程序中用于创建对象和原始值的文字语法的子集之后形成的。遗憾的是,这种命名会导致JavaScript开发人员的混淆。

因此,要确定您是否正在处理JSON,最重要的是要考虑的是您所做的事情是否会导致创建遵循JSON语法规则的Unicode数据。

举个例子:

var foo = {"bar":"baz"};

那是JSON吗?好吧,如果它在JavaScript程序中运行,它将被评估,foo将保存对某些非Unicode文本数据的内存的引用。

当然,我们可以隔离代码的{"bar":"baz"}部分,并将其转移到自己编码为Unicode的文本文件中,但是我们真的不再处理相同的示例了。

所以我们说我们做到了。我们打开文本编辑器,确保它已设置为Unicode编码,然后粘贴上面代码的一部分。所以现在整个文本文件是这样的:

{"bar":"baz"}

现在我们可以正确地说我们有JSON数据。如果我在末尾添加了;该怎么办?

{"bar":"baz"};

它不再是JSON,因为它已被;破坏,这是不允许的。同样,我们可以将其称为JSON 除了之外的任何无效的东西,但它实际上是完整的还是无效的。

回到JavaScript示例。在JavaScript程序的语法中引用JSON是否有意义?好吧,拿我们原来的例子。如果我们可以使用一些JavaScript语法来创建Unicode数据并使其符合JSON语法,那么是的,我们可以正确地谈到在我们的程序中使用JSON。

那么JavaScript让我们创建Unicode数据吗?是的,JavaScript中的所有字符串都是UTF-16编码的。因此,我们需要做的就是创建一个字符串。

var foo = '{"bar":"baz"}';

现在我们不会调用整行JSON,但我们可以正确地说foo变量指的是保存JSON数据的内存。

然后我们可以将数据传输到用完全不同的编程语言编写的服务器,只要它有一个JSON解析器,它就可以解析它,并将其转换为对该服务器有意义的任何对象类型。