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()+"---------");
}

}

}

fastjson是一款高性能的Java JSON处理器,它提供了很多功能实现JSON字符串与Java对象的转换。复杂JSON格式字符串转换成JavaBean对象时,需要按照以下的方法进行操作: 首先,我们需要创建一个JavaBean类,属性需要与对应的JSON格式相匹配,可以使用注解或者getter、setter方法来指定属性名。如下面的代码片段所示,我们创建了一个User类。 ```java public class User { private String name; private int age; private List<Address> addressList; // getter、setter、toString方法省略 } ``` 在User类,我们定义了与JSON格式相对应的属性,其addressList是一个List类型,它的元素是Address类型,如下所示: ```java public class Address { private String city; private String street; private String zipCode; // getter、setter、toString方法省略 } ``` 接着,我们可以使用fastjson提供的工具类JSON.parseObject()方法将JSON格式字符串转换为JavaBean对象。如下所示: ```java String jsonStr = "{\"name\":\"Tom\",\"age\":18,\"addressList\":[{\"city\":\"beijing\",\"street\":\"chaoyang\",\"zipCode\":\"100000\"},{\"city\":\"shanghai\",\"street\":\"pudong\",\"zipCode\":\"200000\"}]}"; User user = JSON.parseObject(jsonStr, User.class); ``` 在上面的代码,我们首先定义了一个JSON格式字符串,然后使用JSON.parseObject()方法将其转换为User对象。在这个方法的第一个参数,我们需要传入JSON格式字符串,第二个参数是目标JavaBean的类型。fastjson会自动将JSON字符串的属性值赋值给JavaBean对象的对应属性。如果JSON格式字符串的属性名称与JavaBean的属性名称不匹配,我们需要在JavaBean使用@JSONField注解或者getter、setter方法指定对应的属性名。 在将JavaBean对象转换成JSON格式字符串时,我们可以使用fastjson提供的工具类JSON.toJSONString()方法。如下所示: ```java String jsonUser = JSON.toJSONString(user); ``` 在上面的代码,我们将User对象转换为JSON格式字符串。 总结来说,通过fastjson将复杂JSON格式字符串转换成JavaBean对象需要创建对应的JavaBean类,然后使用JSON.parseObject()方法将JSON字符串转换为JavaBean对象。如果需要将JavaBean对象转换成JSON字符串,我们可以使用JSON.toJSONString()方法实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值