json小结和fastjson包的实际json操作
工作中,需要处理与另一方系统数据交换的问题,采用的是调用远程接口的方法,数据格式选择的是json,今天就来聊一聊json,主要分析json数据和java Bean之间的转换问题。
一、json是什么
json,全称是JavaScript Object Notation,中文翻译是JS对象标记语言,是一种轻量级的数据交换格式,易于开发人员编写和阅读,也易于机器进行生成和解析。
二、json数据结构
1、可以存储对象(Object),使用花括号 { } 包含的键值对结构,key必须是string类型,value为任何基本类型或数据结构。
2、可以存储数组(Array),使用中括号 [ ] 来起始,并用逗号 , 来分割元素。
3、可以存储String类型、number类型(整型、浮点型)、Boolean类型(true、false)和null(使用null时可以先定义一个Object为null)。
三、语法
1、普通键值对。
{"name":"小川94","age":18,"gender":"boy","hasGirlFriend":false}
2、存储对象。
{"person":{"name":"小川94","age":18,"gender":"boy","hasGirlFriend":false}}
3、存储数组。
{"name":"小川94","age":18,"gender":"boy","hasGirlFriend":false,"interest":["coding","reading"]}
4、对象加数组复合。
{"person":[{"name":"小川94_2号"},{"name":"小川94_3号"}]}
四、准备工作
1、开发系统:win7 64位。
2、开发环境:jdk1.8。
3、开发语言:java。
4、开发工具:eclipse。
5、fastjson的jar包:我使用的是maven的pom.xml文件配置
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.4</version> </dependency>
五、使用阿里的 fastjson 工具包对json进行实际操作
1、将json字符串转为json对象。
/**
* 将json字符串转为json对象
* @param jsonStr json字符串
* @return
*/
public static JSONObject changeStringToJson(String jsonStr){
JSONObject jo = JSON.parseObject(jsonStr);
return jo;
}
2、将json字符串数组转为json数组对象。
/**
* 将json字符串数组转为json数组对象
* @param jsonStr json字符串
* @return
*/
public static JSONArray changeStringToArray(String jsonStr){
JSONObject jo = JSON.parseObject(jsonStr);
if( !jo.containsKey("person") ){
return null;
}
String strArray = jo.getString("person");
JSONArray ja = JSONArray.parseArray(strArray);
return ja;
}
3、将json字符串转为java Bean对象。
/**
* 将json字符串转为java Bean对象
* @param jsonStr json字符串
* @return
*/
public static Person changeJsonToBean(String jsonStr){
Person person = JSON.parseObject(jsonStr, Person.class);
return person;
}
4、将java Bean对象转为json对象。
/**
* 将java Bean对象转为json对象
* @param person java Bean对象
* @return
*/
public static JSONObject changeBeanToJson(Person person){
JSONObject jo = (JSONObject)JSON.toJSON(person);
return jo;
}
5、将json字符串转为Map。
/**
* 将json字符串转为Map
* @param jsonStr json字符串
* @return
*/
public static Map<String,Object> changeJsonToMap(String jsonStr){
Map<String,Object> map = new HashMap<String,Object>();
JSONObject jo = JSON.parseObject(jsonStr);
for(String str : jo.keySet()){
map.put(str, jo.get(str));
}
return map;
}
6、编写测试类。
protected long startTime;
protected long endTime; public static final String JSON_TO_BEAN = "{"
+ "'name':'小川94',"
+ "'age':18,"
+ "'gender':'boy',"
+ "'hasGirlFriend':false,"
+ "'interest':'coding'"
+ "}"; public static String str = "{\"person\":{"
+ "\"name\":\"小川94\",\"age\":18,\"gender\":\"boy\","
+ "\"hasGirlFriend\":false,\"interest\":\"coding\"}}"; public static String strArray = "{\"person\":["
+ "{\"name\":\"小川94_2号\"},{\"name\":\"小川94_3号\"}]}"; @Before
public void setUp() throws Exception {
this.startTime= System.currentTimeMillis();
System.out.println("=========开始测试===========");
} @After
public void tearDown() throws Exception {
this.endTime = System.currentTimeMillis();
System.out.println("测试用时:"+(endTime-startTime));
System.out.println("=========测试结束===========");
} @Test
public void testChangePersonToBean(){
Person person = JsonUtils.changeJsonToBean(JSON_TO_BEAN);
System.out.println(person);
System.out.println("姓名:"+person.getName());
System.out.println("年龄:"+person.getAge());
System.out.println("性别:"+person.getGender());
} @Test
public void testChangeBeanToJson(){
Person person = new Person();
person.setName("小川94");
person.setAge(18);
person.setGender("boy");
person.setHasGirlFriend(false);
person.setInterest("coding");
JSONObject jo = JsonUtils.changeBeanToJson(person);
System.out.println(jo);
} @Test
public void testChageJsonToMap(){
Map<String,Object> map = JsonUtils.changeJsonToMap(JSON_TO_BEAN);
System.out.println(map);
} @Test
public void testChangeStringToJson(){
JSONObject jo = JsonUtils.changeStringToJson(str);
System.out.println(jo);
} @Test
public void testChangeStringToArray(){
JSONArray ja = JsonUtils.changeStringToArray(strArray);
System.out.println(ja);
System.out.println(ja.get(0));
}
7、运行结果:上面五个测试用例都可以正常编译、运行,这里就不一一截图说明了。
文章首发于我的个人公众号:悦乐书。喜欢分享一路上听过的歌,看过的电影,读过的书,敲过的代码,深夜的沉思。期待你的关注!本博文为本人原创,转载请注明出处!
json小结和fastjson包的实际json操作的更多相关文章
- springMVC学习总结(四)springmvc处理json数据类型以及fastjson的使用
springMVC学习总结(四)springmvc处理json数据类型以及fastjson的使用 主要内容: 这篇文章主要是总结之前使用springmv接收json的时候遇到的问题,下面通过前台发送a ...
- Json和Map互转,四个包(org.json/net.sf.json/com.google.gson/com.alibaba.fastjson)
目前使用的(org.json/net.sf.json/com.google.gson/com.alibaba.fastjson)这四种json-map互转,其他的以后在补充.............. ...
- 阿里巴巴fastjson 包的使用解析json数据
Fastjson是一个Java语言编写的高性能功能完善的JSON库.由阿里巴巴公司团队开发的. 主要特性主要体现在以下几个方面: 1.高性能 fastjson采用独创的算法,将parse的速度提升到极 ...
- fastjson与net.sf.json区别
在现在的开发当中,绝大多数引用阿里巴巴的fastjson.当然net.sf.json同样可以使用. 一.引入net.sf.json包 首先用net.sf.json包,当然你要导入很多包来支持commo ...
- java中的JSON数据转换方法fastjson
1 maven工程引入fastjson <?xml version="1.0" encoding="UTF-8"?> <project xml ...
- alibaba的FastJson找不到JSON对象问题
在现在出现使用JSON.toJsonString()方法时,可能没有JSON这个对象. 这种问题可能是下载的jar版本比较高.在低版本的jar使用的是JSON对象. 我使用的是1.2.47版本的jar ...
- Json解析之FastJson
版权声明:转载请注明出处 https://blog.csdn.net/heqiangflytosky/article/details/37659943 1.FastJson介绍 FastJson是阿里 ...
- Spring Boot Json 之 Jackjson Fastjson
Json 是目前互联网应用使用最为广泛的信息交换格式之一.Spring Boot 内置了 Jackson .Json 在应用中主要体现在以下功能: 序列化 反序列化 字段格式化 验证自动化 目前长用的 ...
- 使用protobuf-java-format包 JsonFormat转Json部分默认值字段消失问题
使用protobuf-java-format包 JsonFormat转Json部分默认值字段消失问题 1.产生的bug XXXXXXXXRequest.Builder request = XXXXXX ...
随机推荐
- 裸板驱动总结(makefile+lds链接脚本+裸板调试)
在裸板2440中,当我们使用nand启动时,2440会自动将前4k字节复制到内部sram中,如下图所示: 然而此时的SDRAM.nandflash的控制时序等都还没初始化,所以我们就只能使用前0~40 ...
- Anaconda 安装 Python 库(MySQLdb)的方法
[已解决]Anaconda 安装 Python 库(MySQLdb)的方法 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 201 ...
- Docker 三剑客之 Docker Swarm
上一篇:Docker 三剑客之 Docker Compose 阅读目录: Docker Machine 创建 Docker 主机 Docker Swarm 配置集群节点 Docker Service ...
- openstack Keystone验证服务集群
#Keystone验证服务群集 openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ##.Keystone验证服务集群 ...
- Python 串口通信操作
下载 pyserial包 https://pypi.python.org/packages/source/p/pyserial/pyserial-2.7.tar.gz#md5=794506184df ...
- YII2连表分页
控制器(controller)页面 use \yii\data\Pagination; //引入这个类 public function actionList(){ $data = Clock::fin ...
- Linux正则表达式语法
基本组成部分: 正则表达式的基本组成部分. 正则表达式 描述 示例 \ 转义符,将特殊字符进行转义,忽略其特殊意义 a\.b匹配a.b,但不能匹配ajb,.被转义为特殊意义 ^ 匹配行首,awk中,^ ...
- easyUI带复选框的组合树
代码: <input id="depts"><script type="text/javascript">$(document).rea ...
- 处理eclipse启动时报java.lang.IllegalStateException
这是我写的第一篇博客,博客我来了: 我是好学的人,希望在这上面遇到志同道合的人,对技术有更高追求的人: 重启eclipse的时候报出来 An error has occurred, See the l ...
- wkhtmltopdf
最近要做一个html转pdf的功能,在网上找了很多内容,itext什么的,都不太满意,最后找到一个wkhtmltopdf,用起来真的很不错,还找到了一篇好文章,我就直接抄过来了,等有时间我再自己理一遍 ...