网站首页 > java教程 正文
背景:
Java处理JSON数据有三个比较流行的类库FastJSON、Gson和Jackson。fastjson是阿里做的国有开源Java工具包,jackson是spring mvc内置的json转换工具,孰强孰弱呢?
1 Json基本介绍
JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。
1.1 Json两种结构
JSON有两种表示结构,对象和数组。
对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码。
{
key1:value1,
key2:value2,
...
}
其中关键字是字符串,而值可以是字符串,数值,true,false,null,对象或数组。
数组结构以”[”开始,”]”结束。中间由0或多个以”,”分隔的值列表组成,语法结构如代码。
[
{
key1:value1,
key2:value2
},
{
key3:value3,
key4:value4
}
]
- 1.2字符串和Json表示方式字符串:指使用“”双引号或’’单引号包括的字符。
例如:var comStr = ‘this is string’;
json字符串:指的是符合json格式要求的js字符串。
例如:var jsonStr = “{StudentID:’100’,Name:’tmac’,Hometown:’usa’}”;
json对象:指符合json格式要求的js对象。
例如:var jsonObj = { StudentID: “100”, Name: “tmac”, Hometown: “usa” }; - 2 几种简单的Json库使用方式
- 2.1 jackson使用
使用的jar包:
jackson-mapper-asl-1.8.11.jar
jackson-core-2.5.1.jar
jackson-databind-2.4.5.jar
也可是使用maven源配置。
一个简单的bean类:
package com.mmall.pojo;
import lombok.Data;
/**
* Created by sww_6 on 2018/8/24.
*/
@Data
public class Users {
private String username;
private Integer age;
}
java对象到json字符串(序列化):
package com.mmall.common;
import com.mmall.pojo.Users;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.codehaus.jackson.map.ObjectMapper;
/**
* Created by sww_6 on 2018/8/24.
*/
public class BeanToJson {
public static void main(String[] args) {
//将对象转成json字符串
Users users = new Users();
users.setAge(18);
users.setUsername("魏璎珞");
ObjectMapper objectMapper = new ObjectMapper();
try {
String jsonString = objectMapper.writeValueAsString(users);
System.out.println(jsonString);
} catch (IOException e) {
e.printStackTrace();
}
//将list集合转换成json字符串
Users user2 = new Users();
user2.setAge(18);
user2.setUsername("沉壁");
Users user3 = new Users();
user3.setAge(18);
user3.setUsername("永琪");
List<Users> jsonList = new ArrayList<>();
jsonList.add(user2);
jsonList.add(user3);
try {
String list = objectMapper.writeValueAsString(jsonList);
System.out.println(list);
} catch (IOException e) {
e.printStackTrace();
}
//将map集合转换成json字符串
Map<String, Users> map = new HashMap();
map.put("user2", user2);
map.put("user3", user3);
try {
String mapJson = objectMapper.writeValueAsString(map);
System.out.println(mapJson);
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果:
一个含java对象集合变量的类,用于json字符串数组到对象集合:
package com.mmall.common;
import com.mmall.pojo.Users;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import org.codehaus.jackson.map.ObjectMapper;
/**
* Created by sww_6 on 2018/8/24.
*/
public class JsonToBeans {
public static void main(String[] args) {
//将json字符串转化为java对象
String userJson = "{\"username\":\"福康安\",\"age\":18}";
ObjectMapper objectMapper = new ObjectMapper();
try {
Users users = objectMapper.readValue(userJson, Users.class);
System.out.println(users + ":" + users.getUsername() + "," + users.getAge());
} catch (IOException e) {
e.printStackTrace();
}
//将json字符串转化成java的list集合
String jsonList = "{\"userList\":[{\"username\":\"永基\",\"age\":18},{\"username\":\"永荣\",\"age\":18}]}";
try {
ListBean listBean = objectMapper.readValue(jsonList, ListBean.class);
System.out.println(listBean.getUserList());
} catch (IOException e) {
e.printStackTrace();
}
//将json转化成java的map集合
String jsonMap = "{\"username\":\"五阿哥\",\"age\":18}";
try {
Map map = objectMapper.readValue(jsonMap, Map.class);
System.out.println(map + ":" + map.get("username") + "," + map.get("age"));
} catch (IOException e) {
e.printStackTrace();
}
//将json字符串数组转换成Map的list集合。
String json = "[{\"username\":\"傅恒\",\"age\":11},{\"username\":\"hsj\",\"age\":12}]";
try {
List<Map> list = objectMapper.readValue(json, List.class);
System.out.println(list.get(0).get("username"));
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果:
- 2.2 fastjson使用fastjson 这是一个性能很好地 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。主要特点: 12a) 快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)
b) 强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
c) 零依赖(没有依赖其它任何类库除了JDK)
猜你喜欢
- 2024-10-15 Java工具库——FastJson的40个常用方法
- 2024-10-15 SpringBoot返回Json(springboot返回json中文乱码)
- 2024-10-15 Hjson:JSON 的语法扩展(json语法结构)
- 2024-10-15 Python语法基础(14)JSON处理(python中json的用法)
- 2024-10-15 想学好Python,一定要掌握的基础模块之JSON
- 2024-10-15 java解析Json数据常用的两个解析库,实例分析
- 2024-10-15 IOS开发String字符串转JSON字典对象
- 2024-10-15 java中的注解:@SerializedName 和 @JsonProperty
- 2024-10-15 学习Python操作JSON,网络数据交换不用愁
- 2024-10-15 撸一个 JSON 解析器(json数据在线解析)
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)