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

工作中,需要处理与另一方系统数据交换的问题,采用的是调用远程接口的方法,数据格式选择的是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      * @return
5      */
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      * @return
5      */
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      * @return
5      */
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、运行结果:上面五个测试用例都可以正常编译、运行,这里就不一一截图说明了。

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

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

时间: 2024-10-11 06:11:04

json小结和fastjson包的实际json操作的相关文章

npm 通过package.json来安装第三方包

通过package.json来安装第三方包 将package.json文件拷贝到项目,在当前目录打开命令行 安装: npm install --production 原文地址:https://www.cnblogs.com/tutumissed/p/8276221.html

阿里巴巴fastjson 包的使用解析json数据

Fastjson是一个Java语言编写的高性能功能完善的JSON库.由阿里巴巴公司团队开发的. 主要特性主要体现在以下几个方面: 1.高性能 fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson.并且还超越了google的二进制协议protocol buf. 2.功能强大 支持各种JDK类型.包括基本类型.JavaBean.Collection.Map.Enum.泛型等. 3.无依赖 不需要例外额外的jar,能够直接跑在JDK上. 4

Json解析之FastJson

1.FastJson介绍 FastJson是阿里巴巴提供的一个Json处理工具包,具有极快的性能,超越任其他的Java Json parser.使用起来非常方便. 2.例程 首先下载fastjson-1.1.27-android.jar包并导入工程中: DataBean.java: package com.heqiang.testactivity; public class DataBean{ private String name; private String url; private St

FastJSON 简介及其Map/JSON/String 互转

在日志解析,前后端数据传输交互中,经常会遇到 String 与 map.json.xml 等格式相互转换与解析的场景,其中 json 基本成为了跨语言.跨前后端的事实上的标准数据交互格式.应该来说各个语言中 解析 json 的库都一大片(具体 json 格式与三方库的介绍请见:http://www.json.org/json-zh.html),比如 python 都集成在了内置库中,成为标准 API,今天我们要聊的是 java 中如何方便的使用 json 格式. 从上面的链接介绍中我们可以看到,

alibaba的FastJson找不到JSON对象问题

在现在出现使用JSON.toJsonString()方法时,可能没有JSON这个对象. 这种问题可能是下载的jar版本比较高.在低版本的jar使用的是JSON对象. 我使用的是1.2.47版本的jar,在使用JSON对象是一直找不到,不知道哪里出了问题. 最后挨个尝试了一下,有可能在jar比较高时,使用的是JSONUtil对象. FastJSON jar包 依赖下载地址     https://mvnrepository.com/artifact/com.alibaba/fastjson/1.2

Json.NET、fastJSON、ServiceStack.Text简单序列化操作性能测试

由于最近项目中需要用到JSON序列化操作,所以对JSON序列化框架做了一下对比. Json.NET(Newtonsoft.Json)是我们平常用的最多的框架,现在成为了Visual Studio Web项目模板默认引用的库之一:fastJSON号称是最小最快的序列化工具:ServiceStack.Text是著名的Stack Exchange团队的开源项目.下面我们开始测试工作: 测试环境:操作系统Windows 8.1,CPU:Intel Core i7-3610QM,Visual Studio

来自阿里的 json 解析方案 fastjson

说起Json 解析,有很多方法,无论是出自Google 的Gson也好,还是来自其他的某某,想必大家都很熟悉.今日在github上闲逛,偶遇 一 json 解析库,看起来很不错,据说是目前最快的解析JOSN 方案.该东东为何神器,他就是来自于阿里团队的  fastjson. 为了方便起见,参考如下代码. 用maven 的同学就方便多了,直接双击打开你的pom.xml 文件,添加如下依赖 <dependency> <groupId>com.alibaba</groupId>

fastjson生成和解析json数据,序列化和反序列化数据

本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<Map<String,Object>) 2.通过一个android程序测试fastjson的用法. fastjson简介: Fastjson是一个Java语言编写的高性能功能完善的JSON库.fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jack

Json 工具介绍 fastjson gson jackson

1. fastjson fastjson是一个Java语言编写的高性能功能完善的JSON库.它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致, 是目前Java语言中最快的JSON库. fastjson接口简单易用,已经被广泛使用在缓存序列化.协议交互.Web输出.Android客户端等多种应 用场景. fastjson是java库,可以用来转换成java对象的JSON表示.它也可以用来转换为等效的java对象的JSON字符串.Fastjson可以任意的java 对象包