【JavaWeb】JSON概述

概念

JSON:JavaScript 对象表示法(JavaScript Object Notation)。

JSON一种数据格式。它本身是一串字符串,只是它有固定格式的字符串,符合这个数据格式要求的字符串,我们称之为JSON。

user包含 3 个用户(对象),数组中每个对象表示了姓名和年龄:

var user =  [
        { "name": "张三", "age": 26 },
        { "name": "李四", "age": 29 },
        { "name": "王五", "age": 31 }
    ]

作用

java可以使用对象对一些属性进行封装。而JSON是在JavaScript中存储和交换文本信息的语法,类似 XML。但是它比 XML 更小、更快,更易解析。

语法规则

  • 数据在名称/值对中:json数据是由键值对构成的,键用引号(单双都行)引起来,也可以不使用引号
  • 数据由逗号分隔:多个键值对由逗号分隔
  • 花括号保存对象
  • 方括号保存数组

数据的书写格式是:{Key:Value}{Key:Array}

例如:

{"name" : "张三"}

值的范围:

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true 或 false
  • 数组(在方括号中)
  • 对象(在花括号中)
  • null

获取数据:

1. JSON对象.键名

var myObj, x;
myObj = { "name":"runoob", "alexa":10000, "site":null };
x = myObj["name"];

2. JSON对象["键"]

var myObj, x;
myObj = { "name":"runoob", "alexa":10000, "site":null };
x = myObj["name"];

嵌套 JSON 对象

JSON 对象中可以包含另外一个 JSON 对象:

myObj = {
    "name":"runoob",
    "alexa":10000,
    "sites": {
        "site1":"www.baidu.com",
        "site2":"m.taobao.com",
        "site3":"c.csdn.net"
    }
}

可以使用点号(.)或者中括号([])来访问嵌套的 JSON 对象。

x = myObj.sites.site2;
// 或者
x = myObj.sites["site1"];

JSON数据和Java对象的相互转换

1. Java转换为JSON对象(常用)

 用jackson解析器实现,步骤如下:

  1. 导入jackson的相关jar包
  2. 创建Jackson核心对象 ObjectMapper
  3. 调用ObjectMapper的相关方法进行转换

转换方法:
1.  writeValue(参数1,obj):
             参数1可以是以下几种:
                        File:将obj对象转换为JSON字符串,并保存到指定的文件中
                        Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
                        OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中

//Java对象转为JSON字符串
    
        //1.创建Person对象
        Person p  = new Person();
        p.setName("张三");
        p.setAge(23);
        p.setGender("男");

        //2.创建Jackson的核心对象  ObjectMapper
        ObjectMapper mapper = new ObjectMapper();

        //3.writeValue方法将对象传入转换到文件中
        String json = mapper.writeValue(new File("d://a.txt"),p);

2. writeValueAsString(obj):将对象转为json字符串

//Java对象转为JSON字符串
    
        //1.创建Person对象
        Person p  = new Person();
        p.setName("张三");
        p.setAge(23);
        p.setGender("男");

        //2.创建Jackson的核心对象  ObjectMapper
        ObjectMapper mapper = new ObjectMapper();

        //3.writeValueAsString方法将对象传入转换为json
        String json = mapper.writeValueAsString(p);
        System.out.println(json); //{"name":"张三","age":23,"gender":"男"}

注解:

1. @JsonIgnore:排除属性。
2. @JsonFormat:属性值的格式化
         例如: @JsonFormat(pattern = "yyyy-MM-dd")

复杂的java对象转换

1. List:数组

2. Map:对象格式一致

依旧使用上面的方法,不过传入方法内的参数不再是一个原来的对象,而是集合

2. JSON转换为Java对象

1. 导入jackson的相关jar包
2. 创建Jackson核心对象 ObjectMapper
3. 调用ObjectMapper的相关方法进行转换
      readValue(json字符串数据,Class)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

编程芝士

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

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

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

打赏作者

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

抵扣说明:

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

余额充值