工作中,需要处理与另一方系统数据交换的问题,采用的是调用远程接口的方法,数据格式选择的是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. 开源项目 log4android 使用方式详解

    话不多说, 直接上主题. log4android 是一个类似于log4j的开源android 日志记录项目. 项目基于 microlog 改编而来, 新加入了对文件输出的各种定义方式. 项目地址: 点 ...

  2. border-radio属性

    boreder-radio属性是css3的新增属性,可以设置圆角的边框. <head>  <style type="text/css"> *{ margin ...

  3. Django的分页器(paginator)

    先导入模块: from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger 分页器paginator 下面的所有方法 ...

  4. 一些公司对quantitative的要求

    来自日月光华BBS: Company: UBS AG Job Title: Quantitative Developers / Analysts (Entry Level, Multiple Posi ...

  5. Outlook邮箱配置

    1.在outlook邮箱里启用pop3 2.接收邮件服务器 pop3-mail.outlook.com 3.发送邮件服务器 smtp-mail.outlook.com 4.其他设置 -->发送服 ...

  6. mysql事务使用 超简单

    MySQL的事务支持不是绑定在MySQL服务器本身,而是与存储引擎相关1.MyISAM:不支持事务,用于只读程序提高性能 2.InnoDB:支持ACID事务.行级锁.并发 3.Berkeley DB: ...

  7. MySQL 性能优化的最佳20多条经验分享(三)(转)

    16. 垂直分割 "垂直分割"是一种把数据库中的表按列变成几张表的方法,这样可以降低表的复杂度和字段的数目,从而达到优化的目的.(以前,在银行做过项目,见过一张表有100多个字段, ...

  8. node.js爬虫

    这是一个简单的node.js爬虫项目,麻雀虽小五脏俱全. 本项目主要包含一下技术: 发送http抓取页面(http).分析页面(cheerio).中文乱码处理(bufferhelper).异步并发流程 ...

  9. VMware---添加esxi主机的实验

     实验环境:window_server_2012_r2_64 SQLServer2012SP1-FullSlipstream-CHS-x64 虚机配置: 关于windows server2012 和 ...

  10. CSS clear 清除浮动,兼容各浏览器

    .clear:after{content:".";display:block;height:0;clear:both;visibility:hidden;} .clear{zoom ...