Json基础知识学习

 

什么是Json

JSON: JavaScript Object Notation(JavaScript 对象表示法),是存储和交换文本信息的语法。

主要用于服务器和Web应用程序之间的数据传输。JSON文件扩展名是 .json

举个栗子:

{
    "AA":[{"aa":"11","bb":22},{"cc":"33"}],
    "BB":[{"bb":"11"}],
    "CC":[{"cc":"11","c":"22"},{"cc":"11"},{"cc":"11"}]
}
{
  "books": [
    {
      "id": "0001",
      "language": "Java",
      "books": [
        "Head First Java",
        "Java 核心技术",
        "Thinking In Java"
      ]
    },
    {
      "id": "0002",
      "language": "Android",
      "books": [
        "Android从入门到精通",
        "第一行代码"
      ]
    }
  ],
  "movies": [
    {
      "id": "11111",
      "type": "love",
      "movies": [
        "泰坦尼克号"
      ],
      "date": "2019-6-26"
    }
  ]
}
{
	"name":"Jack Ma",
	"age":25.5,
	"dirthday":"1990-01-01",
	"school":"北京大学",
	"major":["Java","Android","IOS"],
	"is_VIP":true,
	"car":{
		"color":"red",
		"brand":"BMW"
	},
	"house":null
}

Json基本用法

名称/值对

花括号里面放对象,方括号里放数组     {"名称":["键1":"值1", "键2":"值2"]}

对象可以包含多个 key/value(键/值)对。 key 必须是字符串,value 可以是合法的 JSON 数据类型(字符串, 数字, 对象, 数组, 布尔值或 null)。

Json和Xml的比较

xml比json更详细,但是Json更易解析

xml是结构化数据,不包括数组,json包括数组

对比:

Json:

{    

    "name": "Jake Ma",    

    "age": "18",    

    "company": "alibaba",    

    "salary": 9

}

Xml:

<dalao>    

    <name>Jake Ma</name>

    <age>18</age>  

    <company>alibaba</company>

    <salary>9</salary>

</dalao>   

Json 4 Java

Java中如何使用Json?

第一步:引用

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>

第二步:使用(这里我使用的是Fastjson)

import com.alibaba.fastjson.JSONObject;

public class JsonObjectTest {
    public static void main(String[] args){
        jsonObject();
    }

    private static void jsonObject() {
        JSONObject people = new JSONObject();
        people.put("name","Jack Ma");
        people.put("age", 25.5);
        people.put("birthday","1990-01-01");
        people.put("school","北京大学");
        people.put("major", new String[]{"Java","Android","IOS"});
        people.put("is_VIP", true);
        people.put("house", null);
        people.put("comment", "这里最后一行放注释");

        System.out.println(people.toString());
    }
}
import com.alibaba.fastjson.JSONObject;
import java.io.StringWriter;

public class Json4Java {
    public static void main(String[] args){
        JSONObject object = new JSONObject();

        object.put("name", "JackMa");
        object.put("salary", new Integer(9));
        object.put("is_VIP", new Boolean(true));

        System.out.println(object);

        StringWriter out = new StringWriter();
        object.writeJSONString(out);
        String jsonText = out.toString();
        System.out.println(jsonText);
    }
}

JSONObject还支持其他方式构建Json的数据:

通过HashMap构建JSON

    private static void createJsonByMap(){
        Map<String, Object> people = new HashMap<>();
        people.put("name","Jack Ma");
        people.put("age", 25.5);
        people.put("birthday","1990-01-01");
        people.put("school","北京大学");
        people.put("major", new String[]{"Java","Android","IOS"});
        people.put("is_VIP", true);
        people.put("house", null);
        people.put("comment", "这里最后一行放注释");

        System.out.println(new JSONObject(people));
    }

通过JavaBean构建JSON

    private static void createJsonByJavaBean(){
        PeopleBean people = new PeopleBean();
        people.setName("Jack Ma");
        people.setAge(25.5);
        people.setBirthday("1990-01-01");
        people.setSchool("北京大学");
        people.setMajor(new String[]{"Java","Android","IOS"});
        people.setIs_VIP(true);
        people.setHouse(null);
        people.setComment("这里最后一行放注释");
        System.out.println(new JSONObject(people));
    }

从文件读取JSON

Json & JavaScript

JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。

Json-->JavaScript Object

JSON.parse() 方法将数据转换为 JavaScript 对象

eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。必须把文本包围在括号中,这样才能避免语法错误:

var obj = eval ("(" + txt + ")");

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Json Demo</title>
</head>
<body>


<h3>通过 JSON 字符串来创建对象</h3>
    <p>
        First Name: <span id="fname"></span><br />
        Last Name: <span id="lname"></span><br />
    </p>
    <script type="text/javascript">
        // 创建包含 JSON 语法的 JavaScript 字符串
        var txt = '{"employees":[' +
            '{"firstName":"Bill","lastName":"Gates" },' +
            '{"firstName":"George","lastName":"Bush" },' +
            '{"firstName":"Thomas","lastName":"Carter" }]}';
        // JavaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象。
        // eval() 函数使用的是 JavaScript 编译器,可解析 JSON 文本,然后生成 JavaScript 对象。
        var obj = eval ("(" + txt + ")");

        document.getElementById("fname").innerHTML=obj.employees[1].firstName;
        document.getElementById("lname").innerHTML=obj.employees[1].lastName;
    </script>

<h3>通过 JSON 字符串来创建对象</h3>
<p>
    <span id="demo"></span><br />
</p>
<script type="text/javascript">
    var txt = '{"name":"Bill", "age":26, "city":"HZ"}';
    var JSONObj = JSON.parse(txt);
    document.getElementById("demo").innerHTML = JSONObj.name + "," + JSONObj.age + "," + JSONObj.city;
</script>

</body>
</html>

输出:

通过 JSON 字符串来创建对象

First Name: George
Last Name: Bush

通过 JSON 字符串来创建对象

Bill,26,HZ

访问对象:

可以使用.或者[]来访问对象的值

var myObj = { "name":"runoob", "alexa":10000, "site":null };
for (x in myObj) {
    document.getElementById("demo").innerHTML += x + "<br>";
}

删除对象属性:

delete myObj.sites.site1;

我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串:

var obj = { "name":"runoob", "alexa":10000, "site":"www.runoob.com"};
var myJSON = JSON.stringify(obj);
document.getElementById("demo").innerHTML = myJSON;

【教程】

JSON 教程 --- 易百教程

JSON 教程 --- 菜鸟教程

JSON 教程 --- W3school

视频教程 --- https://www.imooc.com/learn/523

【工具】

https://jsoneditoronline.org/

【文档】

官方文档 --- http://www.json.org/

发布了23 篇原创文章 · 获赞 1 · 访问量 1892

猜你喜欢

转载自blog.csdn.net/xianyu9264/article/details/93712627
今日推荐