JSON

本文详细介绍了JSON作为数据交换格式的作用及基本语法,包括对象和数组的表示方式。同时,展示了在Java中使用FastJson和Jackson进行JSON与对象的相互转换,并提供了代码示例。在JavaScript中,也演示了如何进行JS对象与JSON对象的转换。通过这些内容,读者可以更好地理解和应用JSON在前后端交互中的角色。
摘要由CSDN通过智能技术生成

一、概述

json 是一种轻量级的数据交换格式,解决的是前端和后端的数据交互易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
在这里插入图片描述

二、语法

[ ] 表示数组
{ } 表示对象
" " 表示是属性名或字符串类型的值
: 表示属性和值之间的间隔符
, 表示多个属性的间隔符或者是多个元素的间隔符

json 其实描述的是 对象,有属性,对应的属性值
属性:属性值 键值对
“属性”:“字符串”
​“属性”:数字
“属性”:布尔值
属性值必须使用“”,引用,属性于属性值之间使用:隔开,属性值如果是字符串,用引号,如果是数值/布尔,直接写

键值对 于 键值对 之间使用 , 分割
多个键值对(属性) 组成对象,使用 { }包裹
多个对象 使用,分割,使用[] 包裹组成 是数组

json 对象

{
	"id": 88,
	"name": "xiaoqiang",
	"age": 18,
	"sex": "女"
}

json数组

[{
		"id": 88,
		"name ": "xiaoqiang",
		"age": 18,
		"sex": "女"
	},
	{
		"id": 77,
		"name ": "zhansan",
		"age": 18,
		"sex": "女"
	}
]

复合json对象

{

	"status": 1,
	"message": "success",
	"data": [{
			"id": 88,
			"name ": "xiaoqiang",
			"age": 18,
			"sex": "女"
		},
		{
			"id": 77,
			"name ": "zhansan",
			"age": 18,
			"sex": "女"
		}
	]
}

三、在java 中json 和对象的相互转换

FastJson
FastJson 来自阿里,最快的json,有安全问题

Jackson解析
是springmvc 自带JackSon 解析

GJson
来自于谷歌公司

导包:
在这里插入图片描述

FastJson

package com.qfedu.json;

import com.alibaba.fastjson.JSON;
import com.qfedu.entity.Student;

import java.util.List;

public class FastJsonTest {
    public static void main(String[] args) {

        String strJson = "{\"id\":88,\"name\":\"xiaoqiang\",\"age\":18,\"sex\":\"女\"}";

        //将json字符串转换为对象
        Student student = JSON.parseObject(strJson, Student.class);
        System.out.println("student:" + student);

        //将对象转换为json
        System.out.println(JSON.toJSONString(student));

        //将json数组转换为java集合
        String listJson = "[{\"id\":88,\"name\":\"xiaoqiang \",\"age\":18,\"sex\":\"女\"},{\"id\":77,\"name \":\"zhansan\",\"age\":18,\"sex\":\"女\"}]";

        List<Student> studentList = JSON.parseArray(listJson, Student.class);
        for (Student student1 : studentList) {
            System.out.println(student1);
        }
        //将java集合转换为json数组
        System.out.println(JSON.toJSONString(studentList));
    }
}

Jackson

package com.qfedu.json;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.qfedu.entity.Student;
import com.fasterxml.jackson.core.type.TypeReference;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;


public class JacksonTest {
    public static void main(String[] args) throws IOException {

        String strJson = "{\"id\":88,\"name\":\"xiaoqiang\",\"age\":18,\"sex\":\"女\"}";

        //将json转为对象
        ObjectMapper objectMapper = new ObjectMapper();

        Student student = objectMapper.readValue(strJson, Student.class);
        System.out.println(student);
        System.out.println("**********");

        //对象转为json
        System.out.println(objectMapper.writeValueAsString(student));
        System.out.println("**********");

        //将json数组转为集合
        String listJson = "[{\"id\":88,\"name\":\"xiaoqiang\",\"age\":18,\"sex\":\"女\"},{\"id\":77,\"name\":\"zhansan\",\"age\":18,\"sex\":\"女\"}]";
        List<Student> studentList =  objectMapper.readValue(listJson, new TypeReference<ArrayList<Student>>() {
        });
        for (Student student1 : studentList) {
            System.out.println(student1);
        }
        System.out.println("**********");

        //将集合转为json
        System.out.println(objectMapper.writeValueAsString(studentList));
    }
}

四、在js中 js对象和 json 对象转换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    // js 字符串
    var  str =  "{\"id\":88,\"name\":\"xiaoqiang \",\"age\":18,\"sex\":\"女\"}";

    // 将 str ----> js 对象
    var  student = JSON.parse(str);

    alert("student.name:"+student.name);

    // js对象 ----》json
    alert("student---str:"+JSON.stringify(student));


    // json数组
    var  listJson = "[{\"id\":88,\"name\":\"xiaoqiang \",\"age\":18,\"sex\":\"女\"},{\"id\":18,\"name\":\"杨涛 \",\"age\":18,\"sex\":\"女\"}]";

    // json数组 --->js 对象数组
    var studentList = JSON.parse(listJson);
    for (var i=0;i<studentList.length;i++){
        alert("item:"+studentList[i].name)
    }

    // js 对象数组 --->str
    alert("studentList--->json:"+JSON.stringify(studentList))
</script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值