fastjosn:String字符串json对象和java对象的相互转化

16 篇文章 1 订阅

在处理前后端数据时经常需要将json转成java对象,或者将java对象转成json,下面简单介绍下如何使用fastjson进行两者间的转化。

json字符串转java对象

fastjson中定义了一个JSONObject对象,它有很多方法能实现json字符串和java对象的转化,如下:

String str = "{\"name\":\"tom\",\"age\":\"12\"}";
//json字符串转化成json对象
JSONObject jsonObject = JSONObject.parseObject(str);
System.out.println(jsonObject.get("name"));
System.out.println(jsonObject.getInteger("age"));
//json字符串转化成java对象
HashMap map = JSONObject.parseObject(str, HashMap.class);
System.out.println(map.get("name"));

有时候可能是一个json数组字符串,这时可以将其转化成list集合的形式,如下:

//json数组转成java集合
String strArr = "[{\"name\":\"tom\",\"age\":\"12\"},{\"name\":\"jerry\",\"age\":\"10\"}]";
List<Map> list = JSONArray.parseArray(strArr, Map.class);
System.out.println(list.toString());

java对象转json字符串

这个就更简单了,一个方法搞定,如下:
map转json字符串

        //java对象转json对象
        Map<String,String> mapObj = new HashMap<>();
        mapObj.put("name","tom");
        mapObj.put("age","12");
        System.out.println(JSONObject.toJSONString(mapObj));

List转json字符串

		//List<Map>转json字符串
        List<Map<String,String>> mapList = new ArrayList<>();
        Map<String,String> mapObj = new HashMap<>();
        mapObj.put("name","tom");
        mapObj.put("age","12");
        Map<String,String> mapObj1 = new HashMap<>();
        mapObj1.put("name","jerry");
        mapObj1.put("age","10");
        mapList.add(mapObj);
        mapList.add(mapObj1);
        System.out.println(JSONArray.toJSONString(mapList));

自定义的java类转json字符串

//自定义java类转json字符串
public class Student {
    private String name;
    private String sex;
    private int age;
    
    public Student(String name,String sex,int age) {
        this.name = name;
        this.sex = sex;
        this.age =age;
    }
}
Student student = new Student("tom","boy",12);
System.out.println(JSONObject.toJSONString(student));

在将自定义类转换为json字符串时,还可以使用注解定义json串的格式,例如:

public class Student {
	 @JSONField(name="NAME", serialize=false, ordinal = 1)
    private String name;
    @JSONField(name="SEX", serialize=false, ordinal = 2)
    private String sex;
    @JSONField(name="AGE", serialize=false, ordinal = 3)
    private int age;
    @JSONField(name="BIRTHDAY", format="dd/MM/yyyy", ordinal = 4)
    private Date birthday;
}

其中:

  • name用来指定key的名称
  • ordinal用来指定属性在json字符串中的顺序
  • serialize用来标记属性是否要序列化
  • format用来格式化数据
    日期在数据传输中一直是个让人头疼的问题,而format很好的解决了它。
    需要注意:在使用@JSONField注解时一定要为私有属性添加get和set方法
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值