分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

json小结和fastjson包的实际json操作

发布时间:2023-09-06 01:33责任编辑:董明明关键词:jsjson

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

1 ????/**2 ?????* 将json字符串转为json对象3 ?????* @param jsonStr json字符串4 ?????* @return5 ?????*/6 ????public static JSONObject changeStringToJson(String jsonStr){7 ????????JSONObject jo = JSON.parseObject(jsonStr);8 ????????return jo;9 ????}

2、将json字符串数组转为json数组对象。

 1 ????/** 2 ?????* 将json字符串数组转为json数组对象 3 ?????* @param jsonStr json字符串 4 ?????* @return 5 ?????*/ 6 ????public static JSONArray changeStringToArray(String jsonStr){ 7 ????????JSONObject jo = JSON.parseObject(jsonStr); 8 ????????if( !jo.containsKey("person") ){ 9 ????????????return null;10 ????????}11 ????????String strArray = jo.getString("person");12 ????????JSONArray ja = JSONArray.parseArray(strArray);13 ????????return ja;14 ????}

3、将json字符串转为java Bean对象。

1 ????/**2 ?????* 将json字符串转为java Bean对象3 ?????* @param jsonStr json字符串4 ?????* @return5 ?????*/6 ????public static Person changeJsonToBean(String jsonStr){7 ????????Person person = JSON.parseObject(jsonStr, Person.class);8 ????????return person;9 ????}

4、将java Bean对象转为json对象。

1 ????/**2 ?????* 将java Bean对象转为json对象3 ?????* @param person java Bean对象4 ?????* @return5 ?????*/6 ????public static JSONObject changeBeanToJson(Person person){7 ????????JSONObject jo = (JSONObject)JSON.toJSON(person);8 ????????return jo;9 ????}

5、将json字符串转为Map。

 1 ????/** 2 ?????* 将json字符串转为Map 3 ?????* @param jsonStr json字符串 4 ?????* @return 5 ?????*/ 6 ????public static Map<String,Object> changeJsonToMap(String jsonStr){ 7 ????????Map<String,Object> map = new HashMap<String,Object>(); 8 ????????JSONObject jo = JSON.parseObject(jsonStr); 9 ????????for(String str : jo.keySet()){10 ????????????map.put(str, jo.get(str));11 ????????}12 ????????return map;13 ????}

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操作

原文地址:https://www.cnblogs.com/xiaochuan94/p/8168576.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved