JSON及java,fastjson实例(附代码)

1.JSON

JSON(JavaScript Object Notation)

1.1JSON介绍及使用场景

JSON(JavaScript Object Notation)是轻量级的数据交换格式。具有良好的可读和便于快速编写的特性,可在不同平台之间进行数据交换。兼容性很高、完全独立于语言文本格式。

1.2 JSON优缺点(和XML对比)

1.2.1 XML优缺点

XML优点缺点
格式统一,符合标准文件格式复杂,庞大,传输占带宽
容易与其他系统进行远程交互,数据共享比较方便服务器端和客户端都需要花费大量代码来解析,导致两端代码复杂且不易维护
客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码
服务器端和客户端解析XML花费较多的资源和时间
JSON优点缺点
数据格式比较简单,易于读写,格式都是压缩的,占用带宽小没有XML格式广泛,没有XML那么通用性
易于解析,客户端JavaScripteval()读取JSON格式目前在Web Service中属于初级阶段
支持多种语言,服务器端语言,便于服务器端的解析
各种语言的转JSON工具多
.服务器端和客户端通信容易
对比JSONXML胜者
数据描述非常好XML
可读性易读很易读XML
数据交互更方便方便JSON
数据体积JSON
传输速度JSON
编码/解码难度容易容易
解释工具丰富丰富
流行度流行很流行XML
可扩展容易容易

查看参考地址

2.java常用JSON转换工具

2.1 fastJSON

2.1.1 fastjson介绍

Fastjson是一个Java语言编写的JSON处理器。
1、遵循http://json.org 标准,为其官方网站收录的参考实现之一。
2、功能强大,支持java基本类型,JavaBean、Collection、Map、Date、Enum、泛型等。
3、无依赖,不需要例外额外的jar,能够直接跑在JDK上。
4、开源,使用Apache License 2.0协议开源。

2.1.2 jar

仓库地址(1.2.29)

2.1.2.2 gradle build.gradle

build.gradle
// https://mvnrepository.com/artifact/com.alibaba/fastjson
compile group: 'com.alibaba', name: 'fastjson', version: '1.2.29'

2.1.2.1 maven pom.xml

pom.xml
<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.29</version>
</dependency>

2.1.3 代码示例

““FastJsonD.java
package cn.htmlv5.bobshute.open.json.fastjson;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;

public class FastJsonD {

public static void main(String[] args) {
    //mapAndJson1();        //1.1 map<-->JSON
    //mapAndJson1_1();      //1.2 map(map.json)->json
    //mapAndJson1_2();      //1.3 map(map)->json
    //objectAndJson();      //2 Object<-->JSON
    listVOAndJson();        //3 List<VO><-->JSON
    //listObjectAndJson();  //4.List<Object><---->JSON
    //arrayObjectAndJson(); //5.Array<VO><---->JSON( 数组和list,json串一样,串都转成list)
}

//1.1 map<-->JSON
public static void mapAndJson1(){
    HashMap<Object, Object> map = new HashMap<>();
    map.put("key1", "value1");
    map.put("key2", "value2");
    String jsonStr = JSON.toJSONString(map);
    System.out.println(jsonStr);    //{"key2":"value2","key1":"value1"}

    Map<String,String> mapFromJson = (Map<String,String>)JSON.parse(jsonStr);
    String value1 = mapFromJson.get("key1");
    String value2 = mapFromJson.get("key2");
    System.out.println("value1->"+value1+",value2->"+value2);   //value1->value1,value2->value2

    /**
     key2:value2
     key1:value1
     */
    for (String key : mapFromJson.keySet()) {
        System.out.println(key+":"+mapFromJson.get(key));
    }
}

//1.2 map(map.json)->json
public static void mapAndJson1_1(){
    HashMap<Object, Object> map = new HashMap<>();
    map.put("key1", "value1");
    map.put("key2", "value2");

    HashMap<Object, Object> map1 = new HashMap<>();
    map1.put("key11", "value11");
    map1.put("key12", "value12");
    String map1jsonStr = JSON.toJSONString(map1);
    map.put("map1jsonStr", map1jsonStr);

    String jsonStr = JSON.toJSONString(map);
    System.out.println(jsonStr);    //{"key1":"value1","key2":"value2","map1jsonStr":"{\"key12\":\"value12\",\"key11\":\"value11\"}"}
}

//1.3 map(map)->json
public static void mapAndJson1_2(){
    HashMap<Object, Object> map = new HashMap<>();
    map.put("key1", "value1");
    map.put("key2", "value2");

    HashMap<Object, Object> map1 = new HashMap<>();
    map1.put("key11", "value11");
    map1.put("key12", "value12");

    map.put("map1jsonStr", map1);

    String jsonStr = JSON.toJSONString(map);
    System.out.println(jsonStr);    //{"key1":"value1","key2":"value2","map1jsonStr":{"key12":"value12","key11":"value11"}}

}


//2.Object<-->JSON
public static void objectAndJson(){
    UserInfo userInfo = new UserInfo();
    userInfo.setAge(30);
    userInfo.setName("name1");
    String jsonStr = JSON.toJSONString(userInfo);
    System.out.println(jsonStr);    //{"age":30,"username":"name1"}
    UserInfo userInfoFromJson = JSON.parseObject(jsonStr, UserInfo.class);
    System.out.println("userInfoFromJson.getAge():"+userInfoFromJson.getAge()+",userInfoFromJson.getName():"+userInfoFromJson.getName());//userInfoFromJson.getAge():30,userInfoFromJson.getName():name1
}

//3.List<VO><-->JSON
public static void listVOAndJson(){
    UserInfo userInfo1 = new UserInfo();
    userInfo1.setAge(10);
    userInfo1.setName("name1"); 


    UserInfo userInfo2 = new UserInfo();
    userInfo2.setAge(20);
    userInfo2.setName("");
    UserInfoAddress userInfoAddress2 = new UserInfoAddress();
    userInfo2.setUserInfoAddress(userInfoAddress2);

    UserInfo userInfo3 = new UserInfo();
    userInfo3.setAge(30);
    userInfo3.setName("");
    UserInfoAddress userInfoAddress3 = new UserInfoAddress();
    userInfoAddress3.setProvince("province");
    userInfo3.setUserInfoAddress(userInfoAddress3);

    List<UserInfo> userInfoList = new ArrayList<UserInfo>();
    userInfoList.add(userInfo1);
    userInfoList.add(userInfo2);
    userInfoList.add(userInfo3);
    String jsonStr = JSON.toJSONString(userInfoList);
    System.out.println("jsonStr->"+jsonStr);//jsonStr->[{"age":30,"name":"name1"},{"age":20,"name":"","userInfoAddress":{"province":"province"}},{"age":20,"name":""}]
    List<UserInfo> userInfoListFromJson= JSON.parseArray(jsonStr,UserInfo.class);
    System.out.println("userInfoListFromJson.size()->"+userInfoListFromJson.size());    //userInfoListFromJson.size()->3

    for(int i=0;i<userInfoListFromJson.size();i++){
        UserInfo userInfoTemp = userInfoListFromJson.get(i);
        /*
         0--->userInfoTemp,age:10,name:name1userInfoAddress:null
        1--->userInfoTemp,age:20,name:userInfoAddress:cn.htmlv5.bobshute.open.json.fastjson.UserInfoAddress@5ecddf8f
        getUserInfoAddress.getProvince:null
        2--->userInfoTemp,age:30,name:userInfoAddress:cn.htmlv5.bobshute.open.json.fastjson.UserInfoAddress@3f102e87
        getUserInfoAddress.getProvince:province
         */
        System.out.println(i+"--->"+"userInfoTemp,age:"+userInfoTemp.getAge()+",name:"+userInfoTemp.getName()+"userInfoAddress:"+userInfoTemp.getUserInfoAddress());
        if(userInfoTemp.getUserInfoAddress()!=null){
            System.out.println("getUserInfoAddress.getProvince:"+userInfoTemp.getUserInfoAddress().getProvince());
        }
    }
}

//4.List<Object><---->JSON
public static void listObjectAndJson(){
    List<Object> objectList = new ArrayList<Object>();
    objectList.add(1);;
    objectList.add("strobject");
    String jsonStr = JSON.toJSONString(objectList);
    System.out.println("jsonStr->"+jsonStr);    //jsonStr->[1,"strobject"]

    List<Object> objectFromJson= JSON.parseArray(jsonStr,Object.class);
    for(Object object:objectFromJson){
        /*
            object:1
            object:strobject
         */
        System.out.println("object:"+object);
    }
}

//5.Array<VO><---->JSON( 数组和list,json串一样,串都转成list)
public static void arrayObjectAndJson(){
    UserInfo userInfo1 = new UserInfo();
    userInfo1.setAge(30);
    userInfo1.setName("name1");
    UserInfo userInfo2 = new UserInfo();
    userInfo2.setAge(20);
    userInfo2.setName("name2");
    UserInfo [] userInfoArray = new UserInfo[2];
    userInfoArray[0] = userInfo1;
    userInfoArray[1] = userInfo2;

    String jsonStr = JSON.toJSONString(userInfoArray);
    System.out.println("jsonStr->"+jsonStr);//jsonStr->[{"age":30,"name":"name1"},{"age":20,"name":"name2"}]

    List<UserInfo>  userInfoListFromJson= JSON.parseArray(jsonStr,UserInfo.class );
    System.out.println("userInfoListFromJson.size()->"+userInfoListFromJson.size());    //userInfoListFromJson.size()->2

    for(UserInfo userInfoTemp:userInfoListFromJson){
        /*
          userInfoTemp,age:30,name:name1
          userInfoTemp,age:20,name:name2
         */
        System.out.println("userInfoTemp,age:"+userInfoTemp.getAge()+",name:"+userInfoTemp.getName());
    }
}

}

““

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值