FastJson 和JackJson 的用法 和区别

先说不同点

1.  当对象中有属性为null的时候,fastjson默认是除null的,转后的字符串是不包含为null的那个属性  (见31行)

      如果转map会丢失属性 (见40行)

2.相反的jackjson则不会丢失属性,jackjson会保留为null的那条属性 (见50行)

3.同样是取某个值.fastjson取出来的值不带" " 双引号 ,jackjson带" " 双引号 (见34  63 行)

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cnczsq.mall.elephant.v1.model.User;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
/**
 * @author : zhang sq
 * @date : 2019/9/10 11:15
 **/
public class FastTest {
    public static void main(String[] args) {
        //FastJson  start
        String result="{\"resultCode\":\"00000000\",\"resultMsg\":\"SUCCESS\",\"data\":\n" +
                "{\"accountId\":\"15674752678246536\",\"username\":\"空白°\",\"nickname\":\"空白°\",\"safeUsername\":null,\"email\":null,\"cellPhone\":\"15901414066\",\n" +
                "\"identifier\":\"15674752678246536\",\"verifyCode\":null,\"token\":null,\"password\":\"5EF07368259A14E0597DE114636DEF7C\",\"st\":null,\"passMd5ed\":false,\n" +
                "\"newPassword\":null,\"hasPwd\":false,\"wayRegister\":null,\"userType\":\"无\",\"parentId\":null,\"state\":1,\"enable\":null,\"freezeOpinion\":null,\"ntfl\":\"0\",\n" +
                "\"remoteHost\":null,\"lastLoginAt\":null,\"createAt\":\"2019-09-03 09:47:47\",\"updateAt\":\"2019-09-09 15:34:40\",\"wxUnionId\":null,\"qqOpenId\":null,\n" +
                "\"wbUId\":null,\"city\":\"北京\",\"birthday\":0,\"professional\":null,\"gender\":2,\"signature\":null,\n" +
                "\"avatar\":\"group1/M00/00/24/Cg4BSl1vJ9SAeWBHAAGe2f-xqGs298.jpg\"}}";
        //一个对象里面套一个对象,  去对象里面对象的某个值
        String string = JSONObject.parseObject(result).getJSONObject("data").getString("cellPhone");
        System.out.println("cellPhone"+string);   //cellPhone15901414066
        User user=new User(1,null,18,"武汉","123",true);
        //fastjson对象转json字符串
        String userString = JSON.toJSONString(user);
        System.out.println(userString); //{"address":"武汉","age":18,"id":1,"isParent":true,"tagId":"123"}
        //fastjson 取json字符串里面的某一个值
        String address = JSON.parseObject(userString).getString("address");
        System.out.println(address);    //武汉
        //fastjson json字符串转回对象
        User user1 = JSON.parseObject(userString, User.class);
        System.out.println(user1); //User(id=1, name=null, age=18, address=武汉, tagId=123, isParent=true)
        //fastjson json字符串转成map
        Map map = JSON.parseObject(userString, Map.class);
        System.out.println(map);  //{address=武汉, isParent=true, tagId=123, id=1, age=18}
        //FastJson  end

        //JackJson  start
        System.out.println("JackJson  start");
        User jsckUser=new User(1,null,18,"武汉","123",true);
        ObjectMapper mapper = new ObjectMapper();
        try {
            //jackjson  对象转字符串
            String jsckUer1 = mapper.writeValueAsString(jsckUser);
            System.out.println(jsckUer1); //{"id":1,"name":null,"age":18,"address":"武汉","tagId":"123","isParent":true}
            //jackjson  对象转字节串
            byte[] bytes = mapper.writeValueAsBytes(jsckUser);
            System.out.println(Arrays.toString(bytes));
            //jackjson  字符串转回对象
            User user2 = mapper.readValue(jsckUer1, User.class);
            System.out.println(user2); //User(id=1, name=null, age=18, address=武汉, tagId=123, isParent=true)
            //jackjson  字符串转map
            Map map2 = mapper.readValue(jsckUer1, Map.class);
            System.out.println(map2);  //{id=1, name=null, age=18, address=武汉, tagId=123, isParent=true}
            //jackjson取json字符串的某个值
            JsonNode jsonNode = mapper.readTree(jsckUer1);
            String address2 = jsonNode.get("address").toString();
            System.out.println(address2);  //"武汉"
            String tagId = jsonNode.get("tagId").toString();
            System.out.println(tagId);  //"123"
            //jackJson  集合对象转字符串  字符串转回集合对象
            List<User> userList=new ArrayList<>();
            userList.add(user);
            userList.add(jsckUser);
            String asString = mapper.writeValueAsString(userList);
            List<User> beanList = mapper.readValue(asString, new TypeReference<List<User>>() {});
            System.out.println(beanList); //[User(id=1, name=null, age=18, address=武汉, tagId=123, isParent=true), User(id=1, name=null, age=18, address=武汉, tagId=123, isParent=true)]
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值