JSON

JSON

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)

JSON 是轻量级的文本数据交换格式

JSon 在线文档:https://www.w3school.com.cn/js/js_json_intro.asp

JSON 的定义格式

var 变量名 = { 
    "k1" : value, 		// Number 类型
	"k2" : "value", 	// 字符串类型
	"k3" : [],			// 数组类型
	"k4" : {}, 			// json 对象类型
	"k5" : [{},{}] 		// json 数组
};

快速入门

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="jquery-3.7.1.js" type="text/javascript"></script>
        <script type="text/javascript">
            var myJson = {
                "key1": "lxg", 	// 字符串
                "key2": 123, 	// Number 
                "key3": [1, "hello", 2.3], 	// 数组
                "key4": {"age": 12, "name": "jack"}, 	//json 对象
                "key5": [ 	//json 数组
                    {"k1": 10, "k2": "milan"}, {"k3": 30, "k4": "smith"}
                ]
            };
            //访问 json 的属性
            console.log("key1= " + myJson.key1);
            // 访问 json 的数组属性
            console.log("key3[1]= " + myJson.key3[1]); // hello
            // 访问 key4 的 name 属性
            console.log("name= " + myJson.key4.name); // jack
            // 访问 key5 json 数组的第一个元素
            console.log("myJson.key5[0]= " + myJson.key5[0]); //[object, object]
            console.log("myJson.key5[0].k2= " + myJson.key5[0].k2)// milan
        </script>
    </head>
    <body>
    </body>
</html>

JSON 对象和字符串对象转换

JSON.stringify(json)功能:将一个 json 对象转换成为 json 字符串

JSON.parse( jsonString )功能:将一个 json 字符串转换成为 json 对象

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="jquery-3.7.1.js" type="text/javascript"></script>
        <script type="text/javascript">
            var myJson = {
                "name": "xxx"
            };
            console.log(myJson)
            var s = JSON.stringify(myJson)
            console.log(s)
            var myJson1 = JSON.parse(s)
            console.log(myJson1)

        </script>
    </head>
    <body>
    </body>
</html>

注意事项:

  • JSON.springify(json 对象) 会返回对应 string,并不会影响原来 json 对象
  • JSON.parse(string) 函数会返回对应的 json 对象,并不会影响原来 string
  • 在定义 Json 对象时, 可以使用 ’ ’ 表示字符串,比如 var json_person = {"name": "jack", "age": 100},也可以写成 var json_person = {'name': 'jack', 'age': 100}
  • 但是在把原生字符串转成 json 对象时,必须使用 “”,否则会报错 比如:var str_dog = “{‘name’:‘小黄狗’, ‘age’: 4}”; 转 json 就会报错
  • JSON.springify(json 对象)返回的字符串, 都是 “” 表示的字符串, 所以在语法格式正确的情况下, 是可以重新转成 json 对象的

JSON 在 java 中使用

java 中使用 json,需要引入到第 3 方的包 gson.jar

Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以对 JSON 字符串和 Java 对象相互转换

创建JavaBean:

public class Monster {
    private Integer id;
    private String name;
    private String skill;
    public Monster(Integer id, String name, String skill) {
        this.id = id;
        this.name = name;
        this.skill = skill;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSkill() {
        return skill;
    }
    public void setSkill(String skill) {
        this.skill = skill;
    }
}

JSON与java对象的转换

import com.google.gson.Gson;

public class test {
    public static void main(String[] args) throws Exception {
        Gson gson = new Gson();
        Monster monster = new Monster(100, "小火龙", "喷火");
        
        // 将java对象转换成json字符串
        String json = gson.toJson(monster);
        System.out.println(json);
        
        // 将json字符串转换成java对象
        Monster monster1 = gson.fromJson(json, Monster.class);
        System.out.println(monster1);
    }
}

JSON与List集合的转换

public class test03 {
    public static void main(String[] args) throws Exception {
        Gson gson = new Gson();
        ArrayList<Monster> monsters = new ArrayList<>();
        monsters.add(new Monster(100, "小火龙", "喷火"));
        monsters.add(new Monster(100, "稻草人", "恐惧"));
        
        // 将List集合转换成JSON字符串
        String json = gson.toJson(monsters);
        System.out.println(json);
        
        // 将JSON字符串转换成List集合
        Object o = gson.fromJson(json, new TypeToken<List<Monster>>() {}.getType());
        System.out.println(o);
    }
}

其中TypeToken<List<Monster>>() {}为匿名内部类,用于保存集合元素的类型(因为程序运行时无法直接得到list中元素的具体类型,需要通过匿名子类间接获取)。

JSON与Map的转换

public static void main(String[] args) throws Exception {
    Gson gson = new Gson();
    Map<String, Monster> map = new HashMap<>();
    map.put("1", new Monster(100, "小火龙", "喷火"));
    map.put("2", new Monster(100, "稻草人", "恐惧"));
    
    // 将Map转换成JSON字符串
    String json = gson.toJson(map);
    System.out.println(json);
    
    // 将JSON字符串转换成Map
    Object o = gson.fromJson(json, 
                             new TypeToken<Map<String, Monster>>(){}.getType());
    System.out.println(o);
}
}
  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林小果呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值