• 浅谈JSON


      JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

    一.JSON 语法规则

    • 数据在键值对中
    • 数据由逗号分隔
    • 花括号保存对象
    • 方括号保存数组

    二.基础结构

    JSON有对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。

    1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
    2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

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

    三.基础示例

    1.名称/值对

    名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:

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

    2.表示数组

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

    1 {
    2     "people":[
    3         {"firstName":"Brett","lastName":"McLaughlin","email":"aaaa"},
    4         {"firstName":"Jason","lastName":"Hunter","email":"bbbb"},
    5         {"firstName":"Elliotte","lastName":"Harold","email":"cccc"}
    6     ]
    7 }

    也可以使用相同的语法表示多个值(每个值包含多个记录):

     1 {
     2     "programmers": [{
     3         "firstName": "Brett",
     4         "lastName": "McLaughlin",
     5         "email": "aaaa"
     6     }, {
     7         "firstName": "Jason",
     8         "lastName": "Hunter",
     9         "email": "bbbb"
    10     }, {
    11         "firstName": "Elliotte",
    12         "lastName": "Harold",
    13         "email": "cccc"
    14     }],
    15     "authors": [{
    16         "firstName": "Isaac",
    17         "lastName": "Asimov",
    18         "genre": "sciencefiction"
    19     }, {
    20         "firstName": "Tad",
    21         "lastName": "Williams",
    22         "genre": "fantasy"
    23     }, {
    24         "firstName": "Frank",
    25         "lastName": "Peretti",
    26         "genre": "christianfiction"
    27     }],
    28     "musicians": [{
    29         "firstName": "Eric",
    30         "lastName": "Clapton",
    31         "instrument": "guitar"
    32     }, {
    33         "firstName": "Sergei",
    34         "lastName": "Rachmaninoff",
    35         "instrument": "piano"
    36     }]
    37 }

    四.JavaJSON与对象之间的转换

    1. 将对象转换为JSON字符串,返回值为一个JSON字符串

    1 public static String toJson(Object value) {
    2     try {
    3         return mapper.writeValueAsString(value);
    4     } catch (Exception e) {
    5         e.printStackTrace();
    6     }
    7 
    8     return null;
    9 }

    2.  将JSON字符串转换为实体对象,返回值为实体对象

     1 public static <T> T toObject(String json, Class<T> valueType) {
     2     Assert.hasText(json);
     3     Assert.notNull(valueType);
     4     try {
     5         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     6         mapper.setDateFormat(dateFormat);
     7         return mapper.readValue(json, valueType);
     8     } catch (Exception e) {
     9         e.printStackTrace();
    10     }
    11     return null;
    12 }
  • 相关阅读:
    2018 南京网络预赛Sum
    一个莫比乌斯等式的证明
    LOJ 2452 对称 Antisymmetry——用hash求回文串数
    LOJ 103子串查找——用hash代替kmp算法
    LOJ2823 三个朋友 ——查询字串的哈希值
    hash入门
    2019牛客暑期多校训练营(第十场)Coffee Chicken——递归
    2019牛客暑期多校训练营(第十场)Han Xin and His Troops——扩展中国剩余定理
    mutex 的 可重入
    Linux 编译安装Boost
  • 原文地址:https://www.cnblogs.com/Eason-S/p/5668064.html
Copyright © 2020-2023  润新知