zoukankan      html  css  js  c++  java
  • 浅谈json以及一些常用的解析

    1.什么是JSON?

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。同时,JSON是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON数据不须要任何特殊的 API 或工具包。

    JSON的优点:

    1、基于纯文本,跨平台传递极其简单;

    2、Javascript原生支持,后台语言几乎全部支持;

    3、轻量级数据格式,占用字符数量极少,特别适合互联网传递;

    4、可读性较强,虽然比不上XML那么一目了然,但在合理的依次缩进之后还是很容易识别的;

    5、容易编写和解析,当然前提是你要知道数据结构;

    JSON的缺点当然也有,但在作者看来实在是无关紧要的东西,所以不再单独说明。

    JSON的格式或者叫规则:

    JSON能够以非常简单的方式来描述数据结构,XML能做的它都能做,因此在跨平台方面两者完全不分伯仲。

    1、JSON只有两种数据类型描述符,大括号{}和方括号[],其余英文冒号:是映射符,英文逗号,是分隔符,英文双引号""是定义符。

    2、大括号{}用来描述一组“不同类型的无序键值对集合”(每个键值对可以理解为OOP的属性描述),方括号[]用来描述一组“相同类型的有序数据集合”(可对应OOP的数组)。

    3、上述两种集合中若有多个子项,则通过英文逗号,进行分隔。

    4、键值对以英文冒号:进行分隔,并且建议键名都加上英文双引号"",以便于不同语言的解析。

    5、JSON内部常用数据类型无非就是字符串、数字、布尔、日期、null 这么几个,字符串必须用双引号引起来,其余的都不用,日期类型比较特殊,这里就不展开讲述了,只是建议如果客户端没有按日期排序功能需求的话,那么把日期时间直接作为字符串传递就好,可以省去很多麻烦。

    JSON的示例:

     在JSON中,有两种结构:对象和数组。

        1. 一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间运用 “,”(逗号)分隔。 名称用引号括起来;值如果是字符串则必须用括号,数值型则不须要。例如:

    {"username":"linezero","articlecount":3,"blogurl":"http://www.cnblogs.com/linezero"}

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

        例如:

    [{"username":"linezero","articlecount":3,"blogurl":"http://www.cnblogs.com/linezero"},{"username":"linezero","articlecount":5,"blogurl":"http://www.cnblogs.com/linezero"}]

    2.JSON的解析 

    js对JSON的解析:

    1 var str = '{"username":"linezero","articlecount":3,"blogurl":"http://www.cnblogs.com/linezero"}';
    2 
    3 var data=eval("("+str+")");//转换为json对象
    4 
    5 alert (data.username);//会显示出linezero

    不过eval解析json有安全隐患!

    现在大多数浏览器(IE8及以上,Chrome和Firefox差不多全部)自带原生JSON对象,提供JSON.parse()方法解析JSON,提供JSON.stringify()方法生成JSON,请使用这两个方法!

    如果担心parse()对对象抛异常,可以加一个封装函数:

    1 JSON.pParse = function(tar) {
    2     if( typeof(tar) === 'string' ) {
    3         return JSON.parse(tar);
    4     } else {
    5         return tar;
    6     }
    7 };

    .net对JSON的解析:

     1.在asp.net中的解析

     1 //需要引入命名空间
     2 //using System.Web.Script.Serialization;
     3 
     4 string userdata="{\"username\":\"linezero\",\"articlecount\":3,\"blogurl\":\"http://www.cnblogs.com/linezero\"}";
     5 JavaScriptSerializer ser = new JavaScriptSerializer();
     6 UserInfo user = ser.Deserialize<UserInfo>(userdata);
     7 user.username//这个输出就是linezero
     8 
     9 //创建一个对象类对象里面字段与JSON相同
    10 public class UserInfo
    11 {
    12     public string username;
    13     public int articlecount;
    14     public string blogurl;
    15 }

     2.使用JSON.NET

    简而言之,这是一个可以用于.NET的Json辅助工具类。它可以将对对象序列化为json字符串。

    Json.Net目前的版本是Json.NET 5.0 Release 6 下载

     1 //需要引入命名空间
     2 //using Newtonsoft.Json;
     3 string userdata = "{\"username\":\"linezero\",\"articlecount\":3,\"blogurl\":\"http://www.cnblogs.com/linezero\"}";
     4 UserInfo user=JsonConvert.DeserializeObject<UserInfo>(userdata);//将json转成UserInfo对象
     5 Console.WriteLine(user.username);//输出linezero
     6 
     7 //创建一个对象类对象里面字段与JSON相同
     8 public class UserInfo
     9 {
    10     public string username;
    11     public int articlecount;
    12     public string blogurl;
    13 }

    以上就是我对JSON的一点认识。欢迎各位大大给一些指点。

    如果你觉得本文对你有所帮助,就点下推荐吧。

  • 相关阅读:
    vue使用watch 观察路由变化,重新获取内容
    Intellij IDEA 最新旗舰版注册激活破解(2018亲测,可用)
    前端开发浏览器兼容问题
    基于Docker搭建MySQL主从复制
    js获取计算后的样式表
    js对象取值的两种方式
    js中的style与jQuery中的css
    js页面加载函数
    代码中jndi数据源的支持
    Oracle中的sid与servicename
  • 原文地址:https://www.cnblogs.com/linezero/p/3125587.html
Copyright © 2011-2022 走看看