字符串变json,json字符串转换成对象有哪几种方法
目录
JSON.toJSONString格式化成数据字符串时保留空属性属性说明例子处理返回结果中字段为空或为空,不展示字段的问题(字段展示不全)
JSON.toJSONString格式化成json字符串时保留null属性
使用阿里的
com.alibaba.fastjson.JSON格式化时,默认空属性会被过滤掉,可以设置不过滤空
公共静态字符串parseScriptJsonStringWithNullValue(Object obj){ if(obj==null (obj instance of Undefined)){ return null;} return JSON.toJSONString(obj,new serialize filter[]{ scriptArrayFilter },SerializerFeature .WriteMapNullValue);}指定这个参数即可
SerializerFeature功能.WriteMapNullValue
属性说明
报价域名———输出键时是否使用双引号,默认为真实的
WriteMapNullValue———是否输出值为空的字段,默认为错误的
WriteNullNumberAsZero———数值字段如果为空,输出为0,而非空
WriteNullListAsEmpty——列表字段如果为空,输出为[],而非空
WriteNullStringAsEmpty———字符类型字段如果为空,输出为"",而非空
writenullbooleanasfalse ———布尔值字段如果为空,输出为假的,而非空
例子
字符串ret=JSON。tojsonstringwithdateformat(返回值, yyyy-MM-dd HH:mm:ss ,SerializerFeature .漂亮格式,//保留地图空的字段SerializerFeature功能.WriteMapNullValue,//将线类型的空转成“”序列化功能.WriteNullStringAsEmpty,//将数字类型的空转成0序列化功能WriteNullNumberAsZero,//将目录类型的空转成[]序列化功能WriteNullListAsEmpty,//将布尔代数学体系的类型的空转成错误的序列化功能.WriteNullBooleanAsFalse,//避免循环引用SerializerFeature功能.DisableCircularReferenceDetect);
处理返回结果中字段为空或为null,不展示字段的问题(字段展示不全)
包com。爱琴。MGS。市场。API。配置;导入com。阿里巴巴。快速JSON。序列化程序。序列化程序功能;导入com。阿里巴巴。法斯特森。支持。配置。法斯特松科
nfig;import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;import org.springframework.context.annotation.Configuration;import org.springframework.http.MediaType;import org.springframework.http.converter.HttpMessageConverter;import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport; import java.nio.charset.Charset;import java.util.ArrayList;import java.util.List; /** * description: fastjson处理返回的参数为null、或者不返回 * date: 2019/11/22 15:03 * author: hantao * version: 1.0 * springboot 处理返回结果中字段为空或为null,不展示字段的问题(字段展示不全) */@Configurationpublic class FastJsonConfiguration extends WebMvcConfigurationSupport { /** * 使用阿里 fastjson 作为JSON MessageConverter * @param converters */ @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter(); FastJsonConfig config = new FastJsonConfig(); config.setSerializerFeatures( // 保留map空的字段 SerializerFeature.WriteMapNullValue, // 将String类型的null转成"" SerializerFeature.WriteNullStringAsEmpty, // 将Number类型的null转成0 SerializerFeature.WriteNullNumberAsZero, // 将List类型的null转成[] SerializerFeature.WriteNullListAsEmpty, // 将Boolean类型的null转成false SerializerFeature.WriteNullBooleanAsFalse, // 避免循环引用 SerializerFeature.DisableCircularReferenceDetect); converter.setFastJsonConfig(config); converter.setDefaultCharset(Charset.forName("UTF-8")); List<MediaType> mediaTypeList = new ArrayList<>(); // 解决中文乱码问题,相当于在Controller上的@RequestMapping中加了个属性produces = "application/json" mediaTypeList.add(MediaType.APPLICATION_JSON); converter.setSupportedMediaTypes(mediaTypeList); converters.add(converter); } /** * 整合了swagger需要配置swagger拦截 * @param registry */ @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("swagger-ui.html","index.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); registry.addResourceHandler("/static/**").addResourceLocations("classpath:/META-INF/resources/static/"); } }以上为个人经验,希望能给大家一个参考,也希望大家多多支持盛行IT。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。