alibaba-fastJson

一、JSON类介绍

a、JSON主要实现JSONObject对象,JSONArray对象数组,javabean对象,json字符串之间的相互转化。

b、其中,有关键字transient修饰的toJSONString()用于json对象序列化过程中,希望某个"键:值"出现在json字符串中。

 

使用:

1、JSON类之toJSONString()方法,实现json对象转化为json字符串和javabean对象转化为json 字符串。

2、JSON类之parseObject()方法,实现json字符串转换为json对象或javabean对象

JSONObject jsonObject = JSON.parseObject(s);  ===>{"name":"北京","id":1}
Address address = JSON.parseObject(s, Address.class);  ===> Address(name=北京, id=1)

3、JSON类之JSONArray()方法,实现json字符串转化为json对象数组或List<T>

JSONArray objects = JSON.parseArray(s1);  ===> [{"name":"北京","id":1},{"name":"天津","id":2}]
List<Address> list1 = JSON.parseArray(s1, Address.class);   ===>[Address(name=北京, id=1), Address(name=天津, id=2)]

4、JSON类之toJSON()方法,实现javabean对象转化为json对象

Object o = JSON.toJSON(address);   ===>{"name":"北京","id":1}

5、JSON类之toJavaObject()方法,实现json对象转化为javabean对象

Address address1 = JSON.toJavaObject((JSON) o, Address.class);  ===>Address(name=北京, id=1)

 

 

二、Fastjson 定制序列化

1、@JSONField

可以把@JSONField配置在字段或者getter/setter方法上===>只表现在json字符串,也就是只对toJSONString()方法生成的字符串有效

2、@JSONType

JSONField类似,但JSONType配置在类上,而不是field或者getter/setter方法上。

3、SerializeFilter

PropertyFilter filter = new PropertyFilter() {

    public boolean apply(Object source, String name, Object value) {
        if ("id".equals(name)) {
            int id = ((Integer) value).intValue();
            return id >= 100;
        }
        return false;
    }
};
JSON.toJSONString(obj, filter); 

4、ParseProcess定制反序列化

//注:使用ExtraProcessor 处理多余字段
ExtraProcessor processor = new ExtraProcessor() {
    public void processExtra(Object object, String key, Object value) {
        VO vo = (VO) object;
        vo.getAttributes().put(key, value);
    }
};
    
VO vo = JSON.parseObject("{\"id\":123,\"name\":\"abc\"}", VO.class, processor);

 

三、springMVC集成fastJson

1、springmvc

<mvc:annotation-driven>
    <mvc:message-converters>
        <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
            <property name="fastJsonConfig" ref="fastJsonConfig"/>
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>

<bean id="fastJsonConfig" class="com.alibaba.fastjson.support.config.FastJsonConfig">
    <!--   自定义配置...   -->
</bean>

2、springBoot

@Configuration
public class WebMvcConfigurer extends WebMvcConfigurerAdapter {
    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
        //自定义配置...
        //FastJsonConfig config = new FastJsonConfig();
        //config.set ...
        //converter.setFastJsonConfig(config);
        converters.add(0, converter);
    }
}

 

四、fastJson解决泛型转换

Result<User> obj = (Result<User>) JSON.parseObject(js, new TypeReference<Result<User>>(){});

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值