JSON---JavaScript对象表示法

目录

1. 概念:

2. JSON的作用

3. 语法

3.1 基本规则

3.2 示例

3.3 获取数据

格式

示例

4. JSON和Java对象的相互转换

4.1 常见JSON解析器

4.2 JSON转为Java对象

4.3 Java对象转换为JSON

使用步骤


1. 概念:

JSON:JavaScript Object Notation        JavaScript对象表示法;

在Java中我们可以封装信息如:

Person p=new Person();
p.setName("张三");
p.setAge(19);
p.setGender("男");

那么在JavaScript中怎样存储这样零散的数据呢?

var p={"name":"张三","age":23,"gender":"男"}

2. JSON的作用

1)多用于存储和交换文本信息的语法;

2)进行数据的传输;

3)JSON相比于XML更小、更快、更易解析;

3. 语法

3.1 基本规则

1)数据在名称/值对中:json数据是由键值对构成的,键用引号(单双都行)引起来,也可以不使用引号;

2)值得取值类型:

        数字(整数或浮点数)

        字符串(在双引号中)

        逻辑值(true或false)

        数组(在方括号中)

        对象(在花括号中)

3)数据由逗号分隔:多个键值对由逗号分隔;

4)花括号保存对象:使用{}定义json格式;

5)方括号保存数组;

3.2 示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JSON</title>
    <script>
//1. 基本格式
    var person={"name":"张三","age":23,"gender":"男"};

//2. 嵌套格式
    //2.1 {}嵌套[]
        var person2={
            "persons":[
            {"name":"小明","age":18,"gender":"男"},
            {"name":"张三","age":20,"gender":"男"},
            {"name":"小红","age":21,"gender":"女"}
            ]
        };
    //2.2 []嵌套{}
        var person3=[
            {"name":"小明","age":18,"gender":"男"},
            {"name":"张三","age":20,"gender":"男"},
            {"name":"小红","age":21,"gender":"女"}
            ];
        
    </script>
</head>
<body>
</body>
</html>

3.3 获取数据

格式

1. json对象.键名
2. json对象["键名"]
3. 数组对象[索引]

示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JSON</title>
    <script>
//1. 基本格式
    var person={"name":"张三","age":23,"gender":"男"};

//2. 嵌套格式
    //2.1 {}嵌套[]
        var person2={
            "persons":[
            {"name":"小明","age":18,"gender":"男"},
            {"name":"张三","age":20,"gender":"男"},
            {"name":"小红","age":21,"gender":"女"}
            ]
        };
    //2.2 []嵌套{}
        var person3=[
            {"name":"小1","age":18,"gender":"男"},
            {"name":"张2","age":20,"gender":"男"},
            {"name":"小6","age":21,"gender":"女"}
            ];
//3. 获取数据
        //3.1 获取张三
        alert(person.name);//也可通过alert(person[name]);获取
        //3.2 获取小红
        alert(person2.persons[2].name);
        //3.3 获取小6
        alert(person3[2].name);
        //3.4 获取person对象的所有键和值
        for(var key in person){
            //不能用person.key的方式获取,person.key相当于person."name";
            console.log(key+":"+person[key]);
              }
        //3.5 获取person3中的所有数据
        for(var i=0;i<person3.length;i++){
                var p=person3[i];
                for(var k in p){
                    console.log(k+":"+p[k]);
                }
              }
    </script>
</head>
<body>
</body>
</html>

 

 

 

4. JSON和Java对象的相互转换

4.1 常见JSON解析器

1)Jsonlib(官方)

2)Gson(谷歌)

3)fastjson(阿里巴巴)

4)jackson(SpringMVC内置解析器)

4.2 JSON转为Java对象

1)导入jackson的相关jar包;

jacksonjar包下载地址:https://mvnrepository.com/search?q=jackson

2)创建Jackson核心对象        ObjectMapper;

3)调用ObjectMapper的相关方法进行转换;

        readValue(json字符串数据,Class)


public class JacksonTest {
    
    @Test
    public void test() throws JsonProcessingException {
        //1. 初始化json字符串
        String  json="{\"name\":\"小李\",\"age\":28,\"gender\":\"男\"}";
        //2. 创建ObjectMapper对象
        ObjectMapper objectMapper = new ObjectMapper();
        //3. 转换为Java对象 Person对象
        Person person = objectMapper.readValue(json, Person.class);
        System.out.println(person);
    }
}

 

4.3 Java对象转换为JSON

使用步骤

1)导入jackson的相关jar包;

jacksonjar包下载地址:https://mvnrepository.com/search?q=jackson

2)创建Jackson核心对象        ObjectMapper;

3)调用ObjectMapper的相关方法进行转换;

public class JacksonTest {
    @Test
    public void test1() throws IOException {
        //1. 创建Person对象
        Person person = new Person();
        person.setName("小李");
        person.setAge(28);
        person.setGender("男");
        //2. 创建Jackson核心对象    ObjectMapper
        ObjectMapper objectMapper = new ObjectMapper();
        //3. 转换
        /*
            转换方法
                writeValue(参数1,obj)
                    参数1:
                        File:将obj对象转换为JSON字符串,并保存到指定的文件中
                        Writer:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中
                        OutputStream
                writeValueAsString(obj):将对象转为json字符串
         */
        String s = objectMapper.writeValueAsString(person);
        System.out.println(s);
        objectMapper.writeValue(new File("D://random.txt"),person);
    }
}

 

注:复杂java对象转换

List:数组

Map:与对象一致

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CodeCrusher

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

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

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

打赏作者

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

抵扣说明:

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

余额充值