• JSON【1】


    http://repo1.maven.org/maven2/com/fasterxml/jackson/core/    JSON[jar]包下载

    JSON是什么?

    是一种轻量级的数据交换格式,完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

    JSON 的基本语法?

    • 数据使用名/值对表示。
    • 使用大括号保存对象,每个名称后面跟着一个 ':'(冒号),名/值对使用 ,(逗号)分割。
    • 使用方括号保存数组,数组值使用 ,(逗号)分割。

    2JSON 支持以下两种数据结构:

      名/值对集合: 这一数据结构由不同的编程语言支持。

      有序的值列表: 包括数组,列表,向量或序列等等。

    JSON 语法规则

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

    JSON 值

    JSON 值可以是:

    • 数字(整数或浮点数)
    • 字符串(在双引号中)
    • 逻辑值(true 或 false)
    • 数组(在方括号中)
    • 对象(在花括号中)
    • null

    JSON 文件

    • JSON 文件的文件类型是 ".json"
    • JSON 文本的 MIME 类型是 "application/json"

    JSON 数据类型

    JSON 格式支持以下数据类型:

    类型描述
    数字型(Number) JavaScript 中的双精度浮点型格式
    字符串型(String) 双引号包裹的 Unicode 字符和反斜杠转义字符
    布尔型(Boolean) true 或 false
    数组(Array) 有序的值序列
    值(Value) 可以是字符串,数字,true 或 false,null 等等
    对象(Object) 无序的键:值对集合
    空格(Whitespace) 可用于任意符号对之间
    null

    JSON 对象

    • 创建一个空对象:
    1、获取属性
    var JSONObj = {};


    var JSONObj = { "bookname ":"VB BLACK BOOK", "price":500 };
    JSONObj.name:通过对象点属性获取属性值

    2、获取值

    var myObj, x;
    myObj = { "name":"w3cschool", "alexa":8000, "site":null };
    x = myObj["alexa"];

    3、获取对象与值

    <script>
    var myObj = { "name":"w3cschool", "alexa":8000, "site":null };
    for (x in myObj) {
    document.getElementById("demo").innerHTML +=x +":"+myObj[x] + "<br>";
    }
    </script>

    4、遍历json数组

    myObj = [{
    "name":"runoob",
    "alexa":10000,
    "sites": {
    "site1":"www.runoob.com",
    "site2":"m.runoob.com",
    "site3":"c.runoob.com"
    }
    }
    ]
    for(var i=0;i<myObj.length;i++){
    var name=myObj[i].name;
    var alexa=myObj[i].alexa;
    var sites=myObj[i].sites;
    var site1=sites.site1;
    var site2=sites.site2;
    var site3=sites.site3;
    alert("姓名:"+name+",现金:"+alexa+"参数1:"+site1+"参数2"+site2+"参数3"+site3);
    }

    JSON 与 XML 对比

    冗余度

    XML 文件庞大,文件格式复杂,传输占带宽;JSON 数据格式比较简单,易于读写,格式都是压缩的,占用带宽小。

    XML 比 JSON 冗余,因此对我们来说编写 JSON 会更快。

    数组用法

    XML 被用来描述结构化数据,不包含数组;而 JSON 包含数组。

    解析

    可以使用 JavaScript 的 eval 方法解析 JSON。当针对 JSON 应用这个方法时,eval 返回描述的对象。

    json格式

    JSON结构共有2种:

    1. 对象结构;
    2. 数组结构;

    对象结构

    对象结构是使用大括号“{}”括起来的,大括号内是由0个或多个用英文逗号分隔的“关键字:值”对(key:value)构成的。

    实列:

    var jsonObj = { "键名1":值1, "键名2":值2, …… "键名n":值n }

    JSON数组结构

    JSON数组结构是用中括号“[]”括起来,中括号内部由0个或多个以英文逗号“,”分隔的值列表组成。

    语法:

    var arr =
    [
        {
            "键名1":值1,
            "键名2":值2
        },
        {
            "键名3":值3,
            "键名4":值4
        },
        ……
    ]
    JSON有两种数据:1.无序的对象结构;2.有序的数组结构
    1.无序的对象结构
     无序的对象结构在不同语言中称法不同,比如在Python中称为字典,在JS中称为JSON对象……
     总之就是键/值对组合形式。
    2.有序的数组结构
     有序的的数组结构,即代码片断2所展示的结构。
     将数组作为有序数组进行转换JSON,就可以得到有序的JSON数组结构。

    对象:
    var people = { "programmers": [ { "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" }, { "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" }, { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" } ], "authors": [ { "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" }, { "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" }, { "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" } ], "musicians": [ { "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" }, { "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" } ] }

    修改 JSON 数据

    people.musicians[1].lastName = "Rachmaninov";

    转换回字符串【JS中的转换】

    String newJSONtext = people.toJSONString();

    在 Java 中使用 JSON

    JSON 和 Java 实体映射

    JSON.simple 实体映射从左侧到右侧为解码或解析,实体映射从右侧到左侧为编码。

    JSONJava
    string java.lang.String
    number java.lang.Number
    true | false java.lang.Boolean
    null null
    array java.util.List
    object java.util.Map

    解码时,java.util.List 的默认具体类是 org.json.simple.JSONArrayjava.util.Map 的默认具体类是 org.simple.JSONObject

    在 Java 中编码 JSON

    下面这个简单的示例展示了使用 java.util.HashMap 的子类 JSONObject 编码一个 JSON 对象。这里并没有提供顺序。如果你需要严格的元素顺序,请使用 JSONValue.toJSONString(map) 方法的有序映射实现,比如 java.util.LinkedHashMap。

    import org.json.simple.JSONObject;
    
    class JsonEncodeDemo 
    {
        public static void main(String[] args)
        {
            JSONObject obj = new JSONObject();
    
            obj.put("name", "foo");
            obj.put("num", new Integer(100));
            obj.put("balance", new Double(1000.21));
            obj.put("is_vip", new Boolean(true));
    
            System.out.print(obj);
        }
    }
    结果:{"balance":1000.21,"is_vip":true,"num":100,"name":"foo"}

    JSON 与 Ajax

    <button type="button" onclick="loadJSON()">异步更新数据</button>

     
    学着把生活的苦酒当成饮料一样慢慢品尝, 不论生命经过多少委屈和艰辛, 我们总是以一个朝气蓬勃的面孔, 醒来在每一个早上。
  • 相关阅读:
    POJ 2017 No Brainer(超级水题)
    POJ 2017 No Brainer(超级水题)
    Poj1207 The 3n + 1 problem(水题(数据)+陷阱)
    Poj1207 The 3n + 1 problem(水题(数据)+陷阱)
    Poj1159 Palindrome(动态规划DP求最大公共子序列LCS)
    Poj1159 Palindrome(动态规划DP求最大公共子序列LCS)
    Poj1050_To the Max(二维数组最大字段和)
    Poj1050_To the Max(二维数组最大字段和)
    Poj 2602 Superlong sums(大数相加)
    Poj 2602 Superlong sums(大数相加)
  • 原文地址:https://www.cnblogs.com/yhm9/p/11267465.html
Copyright © 2020-2023  润新知