zoukankan      html  css  js  c++  java
  • 浅谈JSON

    原文:http://www.cnblogs.com/Eason-S/p/5668064.html

     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.名称/值对

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

    1
    2
    {"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 }
    复制代码
  • 相关阅读:
    PAT 甲级 1074 Reversing Linked List (25 分)(链表部分逆置,结合使用双端队列和栈,其实使用vector更简单呐)
    (转载)文献可视化--vosviewer入门
    给出先序和中序,给一个数找到位置并输出它左子树里最大的数
    PAT 甲级 1073 Scientific Notation (20 分) (根据科学计数法写出数)
    python flask框架学习(三)——豆瓣微信小程序案例(二)整理封装block,模板的继承
    第一章 概述
    Mybatis最入门---数据库的下载与安装
    前端页面——Cookie与Session有什么差别
    有限状态机(FSM)的Java 演示
    windows使用技巧和工具(后面可能更新linux)
  • 原文地址:https://www.cnblogs.com/gyadmin/p/8058632.html
Copyright © 2011-2022 走看看