工作中,需要处理与另一方系统数据交换的问题,采用的是调用远程接口的方法,数据格式选择的是 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 文件配置
五、使用阿里的 fastjson 工具包对 json 进行实际操作
- <dependency>
- <groupId>com.alibaba</groupId>
- <artifactId>fastjson</artifactId>
- <version>1.2.4</version>
- </dependency>
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、运行结果:上面五个测试用例都可以正常编译、运行,这里就不一一截图说明了。
文章首发于我的个人公众号:悦乐书。喜欢分享一路上听过的歌,看过的电影,读过的书,敲过的代码,深夜的沉思。期待你的关注!本博文为本人原创,转载请注明出处!
来源: http://www.bubuko.com/infodetail-2447404.html