JSON的使用


 

json简介

json、xml都是纯文本的数据交换格式,常用于前后端数据交互,

与xml相比,json有以下优点

  • 简单易⽤,json的序列化、反序列化都只需一句代码
  • 支持性好,⼏乎所有编程语⾔都有解析json的库
  • 轻量级,这是json最大的优势。json 比 xml 更小、更快——传输速度更快,更易解析——执行速度更快。

 

json对象、数组、字符串

JSON全称JavaScript Object Notation,JavaScript 对象表示法,顾名思义是表示对象的

// json对象,key只能是字符串,value可以是各种数据类型(包括数组、对象)
{ "name":"chy" , "age":20 , "score":100 }


// json数组,元素是json对象
[
    { "name":"张三" , "age":20 , "score":100 },
    { "name":"李四" , "age":19 , "score":90 },
    { "name":"王五" , "age":20 , "score":98 }
]


// json字符串
//json对象是对象类型,json数组是数组类型,json字符串就是把json对象、json数组变成字符串形式
'{ "name":"chy" , "age":20 , "score":100 }'

'[
    { "name":"张三" , "age":20 , "score":100 },
    { "name":"李四" , "age":19 , "score":90 },
    { "name":"王五" , "age":20 , "score":98 }
]'

 

前端 json的序列化、反序列化

json序列化:把json对象、json数组转换为json字符串,进行传输。stringify 字符串化,转换为字符串。
json反序列化:把json字符串转换为json对象、json数组,在前端使用,parse。

// json对象
var user={"name":"chy","age":20}; 

// json数组
var userList=[
  {"name":"zhangsan","age":20},
  {"name":"lisi","age":21},
  {"name":"wangwu","age":19},
];


// json序列化
var userStr=JSON.stringify(user);
var userListStr=JSON.stringify(userList);


// json反序列化
var jsonObject=JSON.parse(userStr);
var jsonArr=JSON.parse(userListStr);

 

后端 json数据对应的实体类

@Getter
@Setter
@ToString
public class User implements Serializable {

    private Integer id;

    private String nickname;

    @JsonIgnore
    private String password;

    private String address;

    private String tel;

    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birthday;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date create_time;

}

@JsonFormat可以格式化该字段的值

@JsonIgnore可以在json对象中去掉该字段,避免把敏感字段传给前端

 

后端 对象、json字符串之间的转换

@ResponseBody、@RestController可以自动将对象、数组、集合转换为json对象、数组,但一些时候需要手动转换,比如将HttpClient返回的响应(字符串)转换为json对象、数组。

阿里的fastjson可以实现json字符串、json对象|数组之间的相互转换
 

依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.73</version>
</dependency>

很多框架都包含了这个依赖,一般不用我们添加

 

将json字符串转换为实体类

String jsonStr;

User user = JSON.parseObject(jsonStr, User.class);
List<User> userList = JSON.parseArray(jsonStr, User.class);

User user1 = JSONObject.parseObject(jsonStr, User.class);
List<User> userList1 = JSONArray.parseArray(jsonStr, User.class);

 

将对象、数组、集合转换为json字符串

User user=null;
List<User> userList = null;

String string1 = JSON.toJSONString(user);
String string2 = JSON.toJSONString(userList);

String string3 = JSONObject.toJSONString(user);
String string4 = JSONArray.toJSONString(userList);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值