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 ...
随机推荐
- 使用vue2.x+webpack+vuex+sass+axios+elementUI等快速搭建前端项目框架
一.本文将分享如何快速搭起基于webpack+vue的前端项目框架,利用vue的自己的脚手架工具vue-cli搭建起基本的环境配置,再通过npm包管理工具引入相应的依赖来完善项目的各种依赖框架.下面是 ...
- 关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
轮播中大多会选择mouseover和mouseout 这个时候是没有任何问题的 但当遇到有css3动画的时候,会发现移入移出过快 动画还没加载完成就需要执行下一个动画,完了动画样式就错乱了. 这时候 ...
- MongoDB中的MapReduce介绍与使用
一.简介 在用MongoDB查询返回的数据量很大的情况下,做一些比较复杂的统计和聚合操作做花费的时间很长的时候,可以用MongoDB中的MapReduce进行实现 MapReduce是个非常灵活和强大 ...
- 十四、Hadoop学习笔记————Zookeeper概述与基本概念
顺序一致性:严格按照顺序在zookeeper上执行 原子性:所有事物请求的结果,在整个集群的应用情况一致 单一视图:无论从哪个服务器进入集群,看到的东西都是一致的 可靠性:服务端成功响应后,状态会 一 ...
- 自动化运维工具——ansible详解(一)
ansible 简介 ansible 是什么? ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.chef.func.fabric)的优点,实现了批量系统 ...
- Dashboard集群
#Dashboard集群 openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ##.Dashboard集群 #####在 ...
- 文件夹的创建(cmd利用)
在windows本地上创建文件夹是无法用..结束的,我们要创建的话,需要在cmd里面进行创建输入 mkdir abc..\ 那么我们从本地看出abc..文件夹建成了怎么删除呢? 需要手动在里面建个文件 ...
- Mysql 表分区和性能
以下内容节选自<Mysql技术内幕InnoDB存储引擎> mysql表分区: 分区功能并不是所有存储引擎都支持的,如CSV.MERGE等就不支持.mysql数据库支持的分区类型为水平分区( ...
- python 正则表达式之零宽断言
零宽断言:用于查找特定内容之前或之后的内容,但并不包括特定内容本身.对于零宽断言来说,我认为最重要的一个概念是位置,零宽断言用于指定一个位置,这个位置应该满足一定的条件(它附近满足什么表达式),并且这 ...
- maven项目部署对Oracle jar包的处理
1.正常情况下,我们是访问不到ojdbc.jar的,需要建立一个本地仓. 2.先找到自己的Oracle中ojdbc.jar将其放入到 C:\Users\Administrator 这个目录下,然 ...