fastjson将对象和json互转,@JSONField的使用及不生效

您所在的位置:网站首页 @jsonproperty与@jsonfield fastjson将对象和json互转,@JSONField的使用及不生效

fastjson将对象和json互转,@JSONField的使用及不生效

2024-02-21 10:27| 来源: 网络整理| 查看: 265

com.alibaba fastjson 1.2.47

 

 

 

 

jsonArray.toJsonString(object)默认首字母小写,但是有些时候,不想要这种默认机制,可以在实体类上加上@JSONField

package com.hainei.pojo.bo.toZonesData; import com.alibaba.fastjson.annotation.JSONField; import lombok.Data; /** * Created with IntelliJ IDEA. * User:wq * Date:2020/12/19 * Time: 15:19 * Description: 10.1作业人员在岗在位数据 */ @Data public class ZonesWorkPeoleBO { @JSONField(name = "QYBM") private String QYBM; @JSONField(name = "GWID") private String GWID; @JSONField(name = "GWMC") private String GWMC; @JSONField(name = "GWDD") private String GWDD; @JSONField(name = "GWSJ") private String GWSJ; @JSONField(name = "RYBMA") private String RYBMA; @JSONField(name = "RYXM") private String RYXM; @JSONField(name = "ZGRYSL") private String ZGRYSL; @JSONField(name = "RCSJ") private String RCSJ; @JSONField(name = "LCSJ") private String LCSJ; @JSONField(name = "STATUS") private Integer STATUS; private String createDate ; private String createBy; private String updateDate ; private String updateBy; private Integer Version; private Integer isHistory; private Integer Sync; private String syncDate; } View Code

 

光这样还不行,要替换springBoot的默认json转化机制,需要在启动类App中注入一个bean。这样才能生效。

@Bean public HttpMessageConverters fastJsonHttpMessageConverters() { FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); fastConverter.setFastJsonConfig(fastJsonConfig); HttpMessageConverter converter = fastConverter; return new HttpMessageConverters(converter); }

 

将json和List互转

package com.hainei.common.json; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import java.util.List; /** * Created by Administrator on 2018\10\30 0030. */ public class JsonListUtil { /** * List 转 json 保存到数据库 */ public static String listToJson(List ts) { String jsons = JSON.toJSONString(ts); return jsons; } /** * json 转 List */ public static List jsonToList(String jsonString, Class clazz) { @SuppressWarnings("unchecked") List ts = (List) JSONArray.parseArray(jsonString, clazz); return ts; } } View Code

 

属性首字母大写传给前端后自动转成了小写。解决思路网上有三种:

1) 如果没有使用fastjson(阿里巴巴出品),使用@JsonProperty("XXXX")的注解方式可以解决问题,XXXX就是转换成Json的属性名,但注意,只有放在getter上才是有效的,直接在属性上加没效果.(这说明spring 默认的jackson类库处理是基于访问器。

2)如果使用了fastjson,就用@JSONField(name="XXXXX")注解方式进行,这个可以放在属性上。不过放在getter,setter上更好。

3)如果同时有两个存在,一般都是fastjson起效果,不过具体情况可以试下,我遇到的就是fastjson起效。当然要强制失效fastjson,就需要在Application类上加注解:@EnableWebMvc.

测试后通过第一种方法解决。

 

 

 

 

java实现数组集合转成json格式

一、下载fastjson.jar

http://repo1.maven.org/maven2/com/alibaba/fastjson

二、项目添加jar包

Java Build Path

三、导入类

import com.alibaba.fastjson.JSON;

四、转换(这里以集合为例)

List listOut = new ArrayList(); String jsonList = JSON.toJSONString(listOut);

 

json 和 数组的相互转换

package com.hainei.common.json; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import java.util.List; /** * Created by Administrator on 2018\10\30 0030. */ public class JsonListUtil { /** * List 转 json 保存到数据库 */ public static String listToJson(List ts) { String jsons = JSON.toJSONString(ts); return jsons; } /** * json 转 List */ public static List jsonToList(String jsonString, Class clazz) { @SuppressWarnings("unchecked") List ts = (List) JSONArray.parseArray(jsonString, clazz); return ts; } } View Code

 

 阿里巴巴jsonArray将对象互转的方法

import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; //json为string类型的json字符串 //json字符串转json对象 JSONObject jsonobject=JSONObject.parseObject(json); //json字符串转换成List(Javabean)对象 List saleInfoList = (List)JSONObject.parseArray(json,YpzsSaleInfo.class); //json字符串转换成Javabean对象 JSONObject.parseObject(json,YpzsSaleInfo.class); //获取json对象里获取值,String类型参数 String token=jsonobject.getString("key值"); //数组类型 JSONArray dataJsonArray =jsonobject.getJSONArray("SaleInfo"); //对象类型 JSONObject jsonobject1=jsonobject.getJSONObject("key值"); //Javabean对象(可以是任何对象比如jsonArray),转换成String类型的JSON字符串 JSONObject.toJSONString(YpzsSaleInfo.class);//Javabean对象 //json对象转javabean JSONObject jsonBean3=jsonobject.getJSONObject("小明"); YpzsSaleInfo parseBean=JSONObject.toJavaObject(jsonBean3, YpzsSaleInfo.class); //jsonArray增加值 JSONArray jsonArray=new JSONArray(); jsonArray.add(jsonBean3); //存值用put jsonobject.put("messageId",""); jsonobject.put("messageId",dataJsonArray); jsonobject.put("messageId",new YpzsSaleInfo());//实体 /***map的转换**/ Map mp =JSONObject.parseObject(jsonBean3.toJSONString(), Map.class); List listmap =JSONObject.parseObject(jsonArray.toString(), List.class); public Object jwscqyInfoAdd(@RequestBody JSONObject params) { String qyzcQyxxbString=params.getJSONArray("sjsccsList").toJSONString(); List list=JSONObject.parseArray(qyzcQyxxbString,QyzcQysjsccsb.class); QyzcQyxxb qyzcQyxxb = JSONObject.toJavaObject((JSONObject)params.get("scqyxx"), QyzcQyxxb.class);

 

 

 

https://www.cnblogs.com/h-java/p/10220737.html

 https://www.liangzl.com/get-article-detail-9315.html

 

fastJson对对象进行操作时,调用的get、set方法

fasetJson转对象时同样要调用get、set方法,但是调用的get、set方法,对象字段首字母小写  例如 getspeed()、setspeed(),(且使用fastjson转对象后,字段都是首字母小写,需要加@jsonFiled) 而不是getSpeed()、setSpeed()。

 

使用fastjson将字符串转换为对象时,出现对象部分字段属性丢失的问题。

https://blog.csdn.net/qq912098812/article/details/109049919



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3