json学习笔记

文章目录

1 json简介

json全称javascript object notation,即js对象表示法

json概述:

  • json是轻量级的文本数据交换格式
  • json使用js语法来描述数据对象,但json独立于语言和平台,json解析器和json库可支持不同的编程语言
  • json具有自我描述性,易于理解

json语法:

  • 对象由{}表示
  • 数组由[]表示
  • 数据形式为key-value形式
  • 数据之间,分隔

json值:

  • 数字(整数或浮点类型)
  • 字符串(""表示)
  • 逻辑(truefalse
  • 数组
  • 对象
  • null

json obj demo:

{ // employees对象
	"employees":[ // 员工集合,数组
		{ // 员工对象
			"name":"tom",
			"age":11
		},
		{
			"name":"cat",
			"age":12
		},
		{
			"name":"thomas",
			"age":20
		}
	]
}

json obj in JavaScript demo

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>jsonDemo</title>
    <script>
        function clickMe1() {
            // 直接操作json对象
            let book = {
                "jid":"10001",
                "jname":"java programming",
                "jprice":99.9,
                "jauthor":"lg"
            };
            document.getElementById("jid").innerHTML=book.jid;
            document.getElementById("jname").innerHTML=book.jname;
            document.getElementById("jprice").innerHTML=book.jprice;
            document.getElementById("jauthor").innerHTML=book.jauthor;
        }
        function clickMe2() {
            // 字符串转json对象,字符串可以是服务端返回的值
            let jsonStr = "{\n" +
                "                \"jid\":\"10002\",\n" +
                "                \"jname\":\"json programming\",\n" +
                "                \"jprice\":100,\n" +
                "                \"jauthor\":\"tt\"\n" +
                "            }";
            let book = eval("(" + jsonStr + ")");
            document.getElementById("jid").innerHTML=book.jid;
            document.getElementById("jname").innerHTML=book.jname;
            document.getElementById("jprice").innerHTML=book.jprice;
            document.getElementById("jauthor").innerHTML=book.jauthor;
        }
    </script>
</head>
<body>
    <h2>js创建json对象</h2>
    <p>
        id:<span id="jid"></span><br>
        name:<span id="jname"></span><br>
        price:<span id="jprice"></span><br>
        author:<span id="jauthor"></span><br>
    </p>
    <input type="button" onclick="clickMe1()" value="获取json对象1">
    <input type="button" onclick="clickMe2()" value="获取json对象2">
</body>
</html>

2 gson

gson是google提供的java对象和json数据之间进行映射的java类库

下面是gson格式转换的几个demo:

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.my4tb.jsonBean.Book;
import org.junit.BeforeClass;
import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

public class TestJson {

    private static Gson gson;

    @BeforeClass
    public static void beforeClass() {
        gson = new Gson();
    }

    // str 2 gson
    @Test public void test1() {
        // jsonStr
        String jsonStr = "{\n" +
                "                \"id\":\"10001\",\n" +
                "                \"name\":\"java programming\",\n" +
                "                \"price\":99.9,\n" +
                "                \"author\":\"lg\"\n" +
                "            }";
        // convert
        Book book = gson.fromJson(jsonStr, Book.class);
        // print
        System.out.println("book = " + book);
    }

    // gson 2 str
    @Test public void test2() {
        // obj
        Book book = new Book("10001", "java programming", 100d, "my");
        String jsonStr = gson.toJson(book);
        System.out.println("jsonStr = " + jsonStr);
    }

    // gson 2 str for list
    @Test public void test3() {
        List<Book> books = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            Book book = new Book("id" + i, "java programming" + i, (double) i, "my" + i);
            books.add(book);
        }
        String jsonStr = gson.toJson(books);
        System.out.println("jsonStr = " + jsonStr);
    }

    // gson 2 list obj
    @Test public void test4() {
        new ArrayList<Integer>() {};
        String gsonStr =
            "[{\"id\":\"id0\",\"name\":\"java programming0\",\"price\":0.0,\"author\":\"my0\"}," +
                    "{\"id\":\"id1\",\"name\":\"java programming1\",\"price\":1.0,\"author\":\"my1\"}," +
                    "{\"id\":\"id2\",\"name\":\"java programming2\",\"price\":2.0,\"author\":\"my2\"}]";
        List<Book> books = gson.fromJson(gsonStr, new TypeToken<List<Book>>() {}.getType());
        System.out.println("books = " + books);
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值