工作中,需要处理与另一方系统数据交换的问题,采用的是调用远程接口的方法,数据格式选择的是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操作的更多相关文章

  1. springMVC学习总结(四)springmvc处理json数据类型以及fastjson的使用

    springMVC学习总结(四)springmvc处理json数据类型以及fastjson的使用 主要内容: 这篇文章主要是总结之前使用springmv接收json的时候遇到的问题,下面通过前台发送a ...

  2. 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互转,其他的以后在补充.............. ...

  3. 阿里巴巴fastjson 包的使用解析json数据

    Fastjson是一个Java语言编写的高性能功能完善的JSON库.由阿里巴巴公司团队开发的. 主要特性主要体现在以下几个方面: 1.高性能 fastjson采用独创的算法,将parse的速度提升到极 ...

  4. fastjson与net.sf.json区别

    在现在的开发当中,绝大多数引用阿里巴巴的fastjson.当然net.sf.json同样可以使用. 一.引入net.sf.json包 首先用net.sf.json包,当然你要导入很多包来支持commo ...

  5. java中的JSON数据转换方法fastjson

    1 maven工程引入fastjson <?xml version="1.0" encoding="UTF-8"?> <project xml ...

  6. alibaba的FastJson找不到JSON对象问题

    在现在出现使用JSON.toJsonString()方法时,可能没有JSON这个对象. 这种问题可能是下载的jar版本比较高.在低版本的jar使用的是JSON对象. 我使用的是1.2.47版本的jar ...

  7. Json解析之FastJson

    版权声明:转载请注明出处 https://blog.csdn.net/heqiangflytosky/article/details/37659943 1.FastJson介绍 FastJson是阿里 ...

  8. Spring Boot Json 之 Jackjson Fastjson

    Json 是目前互联网应用使用最为广泛的信息交换格式之一.Spring Boot 内置了 Jackson .Json 在应用中主要体现在以下功能: 序列化 反序列化 字段格式化 验证自动化 目前长用的 ...

  9. 使用protobuf-java-format包 JsonFormat转Json部分默认值字段消失问题

    使用protobuf-java-format包 JsonFormat转Json部分默认值字段消失问题 1.产生的bug XXXXXXXXRequest.Builder request = XXXXXX ...

随机推荐

  1. 使用vue2.x+webpack+vuex+sass+axios+elementUI等快速搭建前端项目框架

    一.本文将分享如何快速搭起基于webpack+vue的前端项目框架,利用vue的自己的脚手架工具vue-cli搭建起基本的环境配置,再通过npm包管理工具引入相应的依赖来完善项目的各种依赖框架.下面是 ...

  2. 关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别

    轮播中大多会选择mouseover和mouseout  这个时候是没有任何问题的 但当遇到有css3动画的时候,会发现移入移出过快 动画还没加载完成就需要执行下一个动画,完了动画样式就错乱了. 这时候 ...

  3. MongoDB中的MapReduce介绍与使用

    一.简介 在用MongoDB查询返回的数据量很大的情况下,做一些比较复杂的统计和聚合操作做花费的时间很长的时候,可以用MongoDB中的MapReduce进行实现 MapReduce是个非常灵活和强大 ...

  4. 十四、Hadoop学习笔记————Zookeeper概述与基本概念

    顺序一致性:严格按照顺序在zookeeper上执行 原子性:所有事物请求的结果,在整个集群的应用情况一致 单一视图:无论从哪个服务器进入集群,看到的东西都是一致的 可靠性:服务端成功响应后,状态会 一 ...

  5. 自动化运维工具——ansible详解(一)

    ansible 简介 ansible 是什么? ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.chef.func.fabric)的优点,实现了批量系统 ...

  6. Dashboard集群

    #Dashboard集群 openstack pike 部署 目录汇总 http://www.cnblogs.com/elvi/p/7613861.html ##.Dashboard集群 #####在 ...

  7. 文件夹的创建(cmd利用)

    在windows本地上创建文件夹是无法用..结束的,我们要创建的话,需要在cmd里面进行创建输入 mkdir abc..\ 那么我们从本地看出abc..文件夹建成了怎么删除呢? 需要手动在里面建个文件 ...

  8. Mysql 表分区和性能

    以下内容节选自<Mysql技术内幕InnoDB存储引擎> mysql表分区: 分区功能并不是所有存储引擎都支持的,如CSV.MERGE等就不支持.mysql数据库支持的分区类型为水平分区( ...

  9. python 正则表达式之零宽断言

    零宽断言:用于查找特定内容之前或之后的内容,但并不包括特定内容本身.对于零宽断言来说,我认为最重要的一个概念是位置,零宽断言用于指定一个位置,这个位置应该满足一定的条件(它附近满足什么表达式),并且这 ...

  10. maven项目部署对Oracle jar包的处理

    1.正常情况下,我们是访问不到ojdbc.jar的,需要建立一个本地仓. 2.先找到自己的Oracle中ojdbc.jar将其放入到   C:\Users\Administrator  这个目录下,然 ...