zoukankan      html  css  js  c++  java
  • JSON

    JSON(JavaScript Object Notation)是一种轻量级中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构,其可以将JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从Web客户机传递给服务器端程序。JSON采用完全独立于程序语言的文本格式,但是也使用了类C语言的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。

    JSON建构有两种结构:

    json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组2种结构,通过这两种结构可以表示各种复杂的结构:

    1、对象:对象在js中表示为“{}”扩起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。

    2、数组:数组在js中是中括号“[]”扩起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

    经过对象、数组2种结构就可以组合成复杂的数据结构了。

    基础示例:

    简单地说,JSON 可以将JavaScript对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪,但是JavaScript很容易解释它,而且 JSON 可以表示比"名称 / 值对"更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。

      名称 / 值对

      按照最简单的形式,可以用下面这样的 JSON 表示"名称 / 值对":

      { "firstName": "Brett" }

      这个示例非常基本,而且实际上比等效的纯文本"名称 / 值对"占用更多的空间:

      firstName=Brett

      但是,当将多个"名称 / 值对"串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个"名称 / 值对"的 记录,比如:

      { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" }

      从语法方面来看,这与"名称 / 值对"相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。

      表示数组

      当需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在XML中,需要许多开始标记和结束标记;如果使用典型的名称 / 值对(就像在本系列前面文章中看到的那种名称 / 值对),那么必须建立一种专有的数据格式,或者将键名称修改为 person1-firstName这样的形式。

      如果使用 JSON,就只需将多个带花括号的记录分组在一起:

    json格式

    json格式  { "people": [

      { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },

      { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb"},

      { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }

      ]}

      这不难理解。在这个示例中,只有一个名为 people的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和电子邮件地址。上面的示例演示如何用括号将记录组合成一个值。当然,可以使用相同的语法表示多个值(每个值包含多个记录):

      { "programmers": [

      { "firstName": "Brett", "lastName":"McLaughlin", "email": "aaaa" },

      { "firstName": "Jason", "lastName":"Hunter", "email": "bbbb" },

      { "firstName": "Elliotte", "lastName":"Harold", "email": "cccc" }

      ],

      "authors": [

      { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },

      { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },

      { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }

      ],

      "musicians": [

      { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },

      { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }

      ] }

      这里最值得注意的是,能够表示多个值,每个值进而包含多个值。但是还应该注意,在不同的主条目(programmers、authors 和 musicians)之间,记录中实际的名称 / 值对可以不一样。JSON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式。

      在处理 JSON 格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结构中,可以改变表示数据的方式,甚至可以以不同方式表示同一事物。

  • 相关阅读:
    把影响集中到一个点
    How to avoid Over-fitting using Regularization?
    适定性问题
    Numerical Differentiation 数值微分
    What Every Computer Scientist Should Know About Floating-Point Arithmetic
    Generally a good method to avoid this is to randomly shuffle the data prior to each epoch of training.
    What is the difference between iterations and epochs in Convolution neural networks?
    Every norm is a convex function
    Moore-Penrose Matrix Inverse 摩尔-彭若斯广义逆 埃尔米特矩阵 Hermitian matrix
    perl 类里的函数调用其他类的函数
  • 原文地址:https://www.cnblogs.com/jjgo/p/8917356.html
Copyright © 2011-2022 走看看