FastJson中JsonArray、JsonObject、json格式字符串、javabean之间相互转化

package com.kenny;

import java.awt.print.Book;
import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.beltoo.customer.vo.BookVO;

/**
* 测试Json和javaBean之间的转化
* @author kenny
*
*/
public class TestJsonUtils {

public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> booktags = new ArrayList<>();
booktags.add("Philosophy");
booktags.add("History");
booktags.add("Psychology");
BookVO book = new BookVO();
book.setAuthor("wangyangming");
book.setBookcode("MS001");
book.setBookname("王阳明全集");
book.setBookprice(78.5);
book.setBooktags(booktags);
// javabean转json格式的字符串
String jsonObj = JSONObject.toJSONString(book);
//fastjson默认不输出值null的字段,bookcode字段就不会显示出来,
//但如果是book.setBooktype("")这种写法也是会显示的。
System.out.println(jsonObj);
//但是 加上SerializerFeature.WriteMapNullValue的话则会显示null字段booktype的
String jsonObjInCludNull = JSONObject.toJSONString(book, SerializerFeature.WriteMapNullValue);
System.out.println(jsonObjInCludNull);
//显示数据类型
//{"@type":"com.beltoo.customer.vo.BookVO","author":"wangyangming","bookcode":"MS001","bookname":"王阳明全集","bookprice":78.5D,"booktags":["Philosophy","History","Psychology"]}
String jsonObjWithType = JSONObject.toJSONString(book,SerializerFeature.WriteClassName);
System.out.println(jsonObjWithType);
// json格式字符串转javabean
BookVO book1 = JSON.parseObject(jsonObj, BookVO.class);
System.out.println(book1.getBookname());
// json格式字符串转javabean 跟用BookVO.class的方法是一样的
BookVO book3 = JSON.parseObject(jsonObj, new TypeReference<BookVO>() {});
System.out.println("++++++++++"+book3.getBookname()+"++++++++");
// json格式字符串转化成JSONObject
JSONObject jobj = JSON.parseObject(jsonObj);
System.out.println("**********"+jobj+"**********");
/ /json字符串转JsonArray 也就是反序列化
List<String> booktags2 = new ArrayList<>();
booktags2.add("文学");
booktags2.add("历史");
booktags2.add("小说");
BookVO book2 = new BookVO();
book2.setAuthor("当年明月");
book2.setBookcode("MS002");
book2.setBookname("明朝那些事");
book2.setBookprice(198.0);
book2.setBooktags(booktags2);
List<BookVO> bookslist= new ArrayList<>();
bookslist.add(book);
bookslist.add(book2);
// JSONObject类是JSON类的子类,JSONObject的toJSONString方法其实是调JSON的方法,子类并没有覆写
String jsonArray = JSONObject.toJSONString(bookslist,SerializerFeature.WriteMapNullValue);
System.out.println(jsonArray);
JSONArray jsonarray = JSONArray.parseArray(jsonArray);
for(int i = 0; i<jsonarray.size(); i++) {
//经 验证这样是可以的
BookVO books = JSON.toJavaObject(jsonarray.getJSONObject(i), BookVO.class);
System.out.println("---------"+books.getBookname()+"---------");
}

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值