zoukankan      html  css  js  c++  java
  • 关于Json格式的理解

    因为现在目前从事的工作,前台数据的传递和交互都是通过ajax来实现服务端的操作,那么就少不了Json。

     Json定义:

      JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。

     Json结构:

      “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object)、纪录(record)、结构(struct)、字典(dictionary)、哈希表(hash table)、有键列表(keyed list)或者关联数组 (associative array)。

      值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。

     Json形式:

      1,对象是一个无序的“‘名称/值’对”集合。一个对象以“{”开始、“}”结束。每个“名称”后跟一个“:”,“‘名称/值’ 对”之间使用“,”分隔。

          

      2,数组是值(value)的有序集合。一个数组以“[”开始、“]”结束。值之间使用“,”分隔。

          

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

           

          4,字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

    字符串(string)与C或者Java的字符串非常相似

      

     Json的使用:

    JSON官方网站提供的一个开源的JSON解析器和字符串转换器:json.js

    String.parseJSON()解析函数,它将JSON文本解析称object或者array,可以抛出一个语法错误的异常;

    Array.toJSONString(), boolean.toJSONString(), date.toJSONString(), number.toJSONString(), object.toJSONString(), string.toJSONString()这几个函数可以生成JSON文本。

    示例代码:

    1 var str='["0","1"]';
    2 var obj=str.parseJSON();
    3 document.write(obj[0]);
    4 document.write(obj[1]);

    结果是01

    var doc=new Array();
    doc[0]='0';
    doc[1]='1';
    document.write(doc.toJSONString());

    结果是["0","1"]

    还有一些Json对象和Json数据格式的转换,JSON对象的stringify()和 parse()方法。JSON.stringify(obj)将JSON转为字符串。JSON.parse(string)将字符串转为JSON格式,不过有一定要注意的是如果是从服务端传过来的Json数据格式,可以先用eval(“(“ + jsonStr + ”)”)方式来转换成相应的Json对象,便于后面的Js操作.

    Json处理方式:

     Json可以以GET 和POST两种方式传递到后台去处理,期中GET方式以名称/值对发送,POST以表单提交方式处理。不管使用 GET 还是 POST,关键之处在于 JSON 就只是文本。由于不需要特殊编码而且每个服务器端脚本都能处理文本数据,所以可以轻松利用 JSON 并将其应用到服务器。一旦你编写完客户端 JavaScript 代码、允许用户与 Web 表单和 Web 页的交互、收集发送给服务器端程序以做处理所需的信息,此时,服务器就成为了应用程序(如果调用了异步使用的服务器端程序,则可能是我们认为的所谓的“Ajax 应用程序”)中的主角。在此时,您在客户端所做的选择(比如使用 JavaScript 对象,然后将其转换成 JSON 字符串)必须要与服务器端的选择相匹配,比如使用哪个 API 解码 JSON 数据。

    不管在服务器端使用何种语言,在服务器端处理 JSON 基本上就需要两个步骤。

    (1) 针对编写服务器端程序所用的语言,找到相应的 JSON 解析器/工具箱/帮助器 API。

    (2) 使用 JSON 解析器/工具箱/帮助器 API 取得来自客户机的请求数据并将数据转变成脚本能理解的东西。

    JSON与XML的比较

    可读性

    JSON和XML的可读性可谓不相上下,一边是建议的语法,一边是规范的标签形式,很难分出胜负。

    可扩展性

    XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。

    编码难度

    XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具,但是JSON的编码明显比XML容易许多,即使不借助工具也能写出JSON的代码,可是要写好XML就不太容易了。

    解码难度

    XML的解析得考虑子节点父节点,让人头昏眼花,而JSON的解析难度几乎为0。

    总结

    根据工作中碰到的问题,我认为在从前台获取相应的Json对象,然后在传输的时候,构造的一个大的Json对象,转化成相应的Json数据格式的文本,传递到服务端处理,服务端通过API工具或者自身语言自带的工具来处理获取的Json数据文本,转化成相应的Json对象,处理完之后,传递给前台也是类似的过程,然后在前台可以把处理后的Json数据值转换成Json对象,便于我们后期处理,Json始终是以文本来传输。

    水平有限,写的不足之处,请指出。

  • 相关阅读:
    图数据库的选择与对比(Neo4j)
    pip install ahocorasick报错以及Requirement already satisfied问题
    从知识图谱到认知图谱: 历史、发展与展望
    kafka(一)—— kafka安装简单使用
    python管理docker
    Javaweb前后端分离项目docker部署
    django + uwsgi + nginx部署(前后端不分离)
    坑(八)—— LayUI框架中append新的元素的问题
    docker(三)—— 避免一直输入sudo
    坑(七)—— 表单提交方式
  • 原文地址:https://www.cnblogs.com/cr330326/p/2697406.html
Copyright © 2011-2022 走看看