zoukankan      html  css  js  c++  java
  • Json基础

          提及JSON(JavaScript 对象表示法),作为一种数据交换格式,项目中客户端与服务端交互的时候频繁用到。说来惭愧,刚实习的时候,直接被派到政府里面去对接开发门户网站,没错,组长交代二句就飞到他处出差,当时我还没听过 Json、easyUI,独自坐在监控大厅那叫一个尴尬,手忙脚乱,惴惴不安。着实被鄙视了一番,窃以为耻。

          如果说英语作为世界大部分国家交流的公用语言,那么JSon就算各平台主要进行交互的通用数据格式。毕竟还有部分土著部落交流适用的不是英语,诚然,Json也不是绝对的,XML数据格式也占有一席之地。日常用到的轻量级的数据交换格式,自认为接触的还算多,亦写了简洁版系列来对复杂XML日常使用说明的随笔。这里希望对JSON的一些基础知识进行梳理。

    1.JSON语法

     JSON 数据的格式为 名称:值 ,如 { “Name” :“Mark”  }  ,这里冒号左边部分为名称,用双引号包含。冒号右边为值,可表示 对象、字符串、数组、数字、布尔、null 六种类型。

    表示多笔数据时,用 逗号区别,如  { “Name” :“Mark”  , “Age”:100 }

    这里{ } 是读取的起始对象,

    {

        "Class" : "5",

        [“Name” :“Mark”  , “Age”:15] ,

        [“Name” :“Sientuo”  , “Age”:12] 

    }

    如果拿到一组JSON数据,想要验证其写法是否正确,一般情况下,直接拷贝到在线网站上进行验证即可,毕竟这类网站非常多。

    2. Json数据类型

       JSon中的数据类型是针对值来定义的,这里的值是指JSON数据中《名称:值  中的值,上面提到值有6中类型。下面一一来列举说明。

    ①对象:Json本身就是对象,用 { }包裹,如果其值为对象,肯定涉及到嵌套 ,再复杂的对象嵌套,只要理清层级关系,基础只是牢固,也不会是丈二的和尚。

    {

        “Class” : “5”,

         “Xun”:{"heigh":175,"weigth":55,“sex”:“男”   }

    ②字符串:最常用,只是需要注意的是对特殊字符的转义/

    ③数组:最麻烦,JSON的数组可以是任何类型的组合,虽然在多数语言中这是不被允许的。比床头柜的抽屉,可能每层放不同的书籍,也可能某层放玩具、钞票、或者空着

    {

      "Drawer" : [“Toys”,“Book”,null,1000 ]

    }

    ④数字:整型、浮点型  如年龄、订货量 就是整数,欠款、股票收益 则可用 负浮点数表示。

    {

    “Age”:15,

    “balance”:-123.456

    }

    ⑤布尔:表示事物的两面性,正反(阴阳). 如:你是男是女?(是/不是)  你能活到80岁吗?(能/不能) 你有女朋友(单身狗)吗(有/没有)

     {

      " SingleDog" : true 

     }

    ⑥null :  对某事物的状态说明,表程度.  如:你有几套房子?(2/null -租房狗,鬼的房子)  null表示没有值,JSON中必须用小写,包括 true、false。这里有一概念。字面量:字面值与表达值一至,需要用小写,否则解析时出错。

    {

     " House" :null

    }     

    3.Json 限定

     和大多数语言一样,对于某些成员变量,总会有一些跳跳框框的限定,或者说是一种规范,好比表单提交,年龄框数值超过认知范围,肯定是通过不了验证。对于Net 而言,在创建是数据库表对应的实体Model时,上面总会加上一行限定。而对于Json而言亦如此。

     ① 声明Json Schema 文件

     ②对属性进行限定 如 minLenth、maxLength、minimum、type、required 等

    如:

    {

       “$schema” :“http://json-schema.org/draft-04/schema#”,

        "title" : "cat" ,

        "properties" : { "name" :{  "type" : "string" , "minLenth" : 3 , "maxLenth" : 20 },

         "age" : { "type" : "number" ," minimum" : 0  },

        }

       "required" : [ "name","age" ]

    }

    4. Json 序列化

    当我们调用某个网站的接口,返回JSON数据的时候,对于Json 数据的序列化,我曾在从零开始调用手机号归属地查询的接口 随笔中,做过简单的说明,两种方法,各有千秋。

    其一:

      ①创建参数对应实体;②调用JsonConvert类中 DeserializeObject<T> 方法进行解析;③根据节点关系访问数据

    其二:

      ①直接调用JObject类中Parse方法进行解析;②根据节点关系访问数据

     参考文献 《JSON必知必会》、《JSON入门指南》

      ---市人皆大笑,举手揶揄之

  • 相关阅读:
    NumPy 位运算
    NumPy 数组迭代
    NumPy 广播
    NumPy 基于数值区间创建数组
    NumPy 数组切片
    NumPy 基于已有数据创建数组
    NumPy 数组创建
    NumPy 数据类型
    NumPy ndarray
    区块链技术学习指引
  • 原文地址:https://www.cnblogs.com/Sientuo/p/7660258.html
Copyright © 2011-2022 走看看