博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
json小结和fastjson包的实际json操作
阅读量:6296 次
发布时间:2019-06-22

本文共 4990 字,大约阅读时间需要 16 分钟。

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

com.alibaba
fastjson
1.2.4

五、使用阿里的 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
changeJsonToMap(String jsonStr){ 7 Map
map = new HashMap
(); 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
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、运行结果:上面五个测试用例都可以正常编译、运行,这里就不一一截图说明了。

 

文章首发于我的个人公众号:悦乐书。喜欢分享一路上听过的歌,看过的电影,读过的书,敲过的代码,深夜的沉思。期待你的关注!本博文为本人原创,转载请注明出处!

转载于:https://www.cnblogs.com/xiaochuan94/p/8168576.html

你可能感兴趣的文章
OSChina 周六乱弹 ——开发个专门用于拉shi的APP
查看>>
OSChina 周三乱弹 —— 你是靠自己努力才失败的
查看>>
OSChina 周二乱弹 —— 这简直是对佛祖的DDoS攻击啊
查看>>
OSChina 周三乱弹 —— 孤独到都和病毒发生了感情了
查看>>
css中.和#的区别 不写时代表什么
查看>>
elementui tree组件层级过多时可左右滚动
查看>>
elementui select组件选中后无法自动刷新更新值渲染到页面中
查看>>
IO之文件读写
查看>>
MongoDB副本集
查看>>
qt实现-给SQLITE添加自定义函数
查看>>
[Spring MVC起步]我的第一个MVC
查看>>
C语言中使用MySQL(Linux下)
查看>>
ServiceHot告诉你美国的程序员们各编程语言薪资情况
查看>>
js数组中forEach/some/every/map/filter/reduce的区别
查看>>
HBase–常用API操作篇
查看>>
USACO 1.0_Friday the Thirteenth
查看>>
内存是新的硬盘,硬盘是新的磁带
查看>>
安装gitblit
查看>>
Android Java虚拟机拦截技术分析
查看>>
第五章 深入理解Magento – Magento资源配置
查看>>