zoukankan      html  css  js  c++  java
  • 1、JSON 相关基础知识点总结(1)

    JSON定义

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成。它基于ECMA262语言规范(1999-12第三版)中JavaScript 编程语言的一个子集。 JSON采用与编程语言无关的文本格式,但是也使用了类C语言(包括CC++C#JavaJavaScriptPerlPython等)的习惯,这些特性使JSON成为理想的数据交换格式。

    JSONJavaScript对象描述符号(object literal notation)的一个子集。

    JSON的结构基于下面两点

    1. "名称/"对的集合 不同语言中,它被理解为对象(object),记录(record),结构(struct),字典(dictionary),哈希表(hash table),键列表(keyed list)

    2. 值的有序列表 多数语言中被理解为数组(array)

    JSON 语法

    AJAXasynchronous javascript and xml(异步javascriptxml),是指一种创建交互式网页应用的网页开发技术)是目前流行web开发技术,它利用客户端脚本向服务器发送请求,而服务器只检索这一请求代替以往检索整个页面的请求,同时服务器编译的数据量也减少了,从而使得服务器响应变得更快了。

    这些请求通常检索格式化的xml来响应,然后JavaScript代码分析xml响应来显示结果,使得JavaScript代码复杂化了。这个时候新的事物出现了,JSON(JavaScript Object Notation),它能使JavaScript轻松的读取复杂的数据结构。

    特点:

    1、简单格式化的数据交换

    2、易于人们的读写习惯

    3、易于机器的分析和运行

    4JavaScript中使用eval()方法可以很方便的读取 JSON数据

    5JSON支持的语言ActionScript, C, C#, ColdFusion, E, Java, JavaScript, ML, Objective CAML, Perl, PHP, Python, Rebol, Ruby, and Lua. [6]

    语法分析:

    JSON可以用于封装数据,它是一种类似于C语言家族的语言,所以能很容易被C语言家族的语言分析

    1、对象object包含在一对{}//类似定义结构体,有类型,有变量

    2、对象的属性member使用[string : value]成对的表示,属性与属性之间用逗号隔开,如:

    string : value , string : value

    3、数组array包含在一对[]中,如:

    [ elements ]

    4、元素elements与元素之间用逗号隔开

    elements , elements

    5、元素值可具有的类型:

    string, number, object, array, true, false, null

    JSON

    {"menu": {

    "id": "file",

    "value": "File:",

    "popup": {

    "menuitem": [

    {"value": "New", "onclick": "CreateNewDoc()"},

    {"value": "Open", "onclick": "OpenDoc()"},

    {"value": "Close", "onclick": "CloseDoc()"}

    ]

    }

    }

    }

    XML

    <menu id="file" value="File" >

    <popup>

    <menuitem value="New" onclick="CreateNewDoc()" />

    <menuitem value="Open" onclick="OpenDoc()" />

    <menuitem value="Close" onclick="CloseDoc()" />

    </popup>

    </menu>

    对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。[7]

    数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

    值(value)可以是双引号括起来的字符串(string)、数值(number)truefalsenull、对象(object)或者数组(array)。这些结构可以嵌套。

    字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。字符串(string)与C或者Java的字符串非常相似。

    数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。

    可以使用eval()函数的eval()方法调用JavaScript的编译器把JSON文本转变成对象。因为JSONJavaScript的一个确切的子集,编译器可以正确地解析JSON文本,然后生成一个对象结构。

    eval函数的执行效率很高。然而,它能够编译、执行任何的JS程序,所以这样会有安全问题。在来源可信的时候才需要使用eval,这通常是服务器提供基础页面和JSON数据的web应用程序中的情形。而很多情况中,来源是不可信的。特别是永远都不要信任客户端。

    如果关心安全的话,那最好是使用JSON解析器了(js脚本中有解析功能的函数)。JSON解析器只认可JSON文本,因此它比较安全。

    JSON的字符串转换器(stringifier)则作相反的工作,它将JavaScript数据结构转换为JSON文本。JSON是不支持循环数据结构的,所以注意不能把循环的结构交给字符串转换器。[8]

  • 相关阅读:
    谷歌浏览器中安装JsonView扩展程序
    谷歌浏览器中安装Axure扩展程序
    PreferencesUtils【SharedPreferences操作工具类】
    Eclipse打包出错——提示GC overhead limit exceeded
    IntentActionUtil【Intent的常见作用的工具类】
    DeviceUuidFactory【获取设备唯一标识码的UUID(加密)】【需要运行时权限的处理的配合】
    AndroidStudio意外崩溃,电脑重启,导致重启打开Androidstudio后所有的import都出错
    DateTimeHelper【日期类型与字符串互转以及日期对比相关操作】
    ACache【轻量级的开源缓存框架】
    WebUtils【MD5加密(基于MessageDigest)】
  • 原文地址:https://www.cnblogs.com/mydomain/p/1895018.html
Copyright © 2011-2022 走看看