行事中,需求处理与另一方系统数据沟通的题材,采纳的是调用长途接口的艺术,数据格式选拔的是json,昨日就来聊一聊json,首要分析json数据和java
Bean之间的转换难点。

一、json是什么

json,全称是JavaScript Object
Notation,汉译是JS对象标记语言,是一种轻量级的数据交流格式,易于开发人士编写和读书,也不难机器进行变更和剖析。

贰 、json数据结构

① 、能够储存对象(Object),使用花括号 { }
包含的键值对组织,key必须是string类型,value为任何基本项目或数据结构。

② 、能够储存数组(Array),使用中括号 [ ] 来伊始,并用逗号 ,
来划分成分。

三 、能够储存String类型、number类型(整型、浮点型)、Boolean类型(true、false)和null(使用null时方可先定义一个Object为null)。

三、语法

json,壹 、普通键值对。

{"name":"小川94","age":18,"gender":"boy","hasGirlFriend":false}

二 、存款和储蓄对象。

{"person":{"name":"小川94","age":18,"gender":"boy","hasGirlFriend":false}}

叁 、存款和储蓄数组。

{"name":"小川94","age":18,"gender":"boy","hasGirlFriend":false,"interest":["coding","reading"]}

四 、对象加数组复合。

{"person":[{"name":"小川94_2号"},{"name":"小川94_3号"}]}

肆 、准备工作

① 、开发系列:win7 陆九人。

② 、开发环境:jdk1.8。

三 、开发语言:java。

④ 、开发工具:eclipse。

伍 、fastjson的jar包:小编利用的是maven的pom.xml文件配置

<dependency>

    <groupId>com.alibaba</groupId>

    <artifactId>fastjson</artifactId>

    <version>1.2.4</version>

</dependency>

伍 、使用Ali的 fastjson 工具包对json举办实操

① 、将json字符串转为json对象。

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

② 、将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     }

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

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

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

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

五 、将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     }

⑥ 、编写测试类。

    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));
    }

七 、运转结果:上边三个测试用例都得以健康编写翻译、运行,这里就不一一截图注明了。

 

文章首发于自己的村办公众号:悦乐书。喜欢享受一路上听过的歌,看过的影视,读过的书,敲过的代码,上午的构思。期待你的关注!本博文为自身原创,转发请评释出处!

json 1

相关文章

网站地图xml地图