【SpringMVC】06.Json【个人用笔记】

方法1:jackson-databind

1,转换成json发给前台

导入pom

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.13.2.2</version>
        </dependency>

java代码

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


@Controller
// @RestController:(类下所有方法全局JSON)
@RequestMapping("/hello")
public class Demo1 {
	// 如果中文发生乱码的话 @RequestMapping(value="/test3",produces="text/html;charset=utf-8")
    @RequestMapping("/test1")
    @ResponseBody
    public User test1() {
        return new User("五河士道",16);
    }
}

输出结果

{"name":"五河士道","age":16}
2,前端发json给后台
        var user = {name:"五河士织", age:"16"};
        var userJson = JSON.stringify(user);
3,后台接收json
    @RequestMapping("/test2")
    public User test2(@RequestBody User user) {
        System.out.println(user);
        return user;
    }
4,关键字总结
# RestController:
	类下所有方法都会return json形式
	使用的时候要删除 @Controller 注解
# ResponseBody:
	只针对某一个方法
# ReuqestBody:
	接收从前端来的json(前端要post)

补充注解

1,日期格式化
    @JsonFormat(pattern = "yyyy年MM月dd日 HH:mm:ss",timezone = "GMT-8")
    private Date bitrh;
2,禁止某一属性转换json
	@JsonIgnore
	private String name;
3,禁止为空的属性转换json
	@JsonInclude(JsonInclude.Include.NON_NULL) // 其他的属性也可以试试,比如数组用empty
	private String name;
4,属性名改名
	@JsonProperty("name2")
	private String name;
5,序列化

定义序列化规范

public class MySerialize extends JsonSerializer<Double> {
    @Override
    public void serialize(Double aDouble, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        // 四舍五入
        String number = BigDecimal.valueOf(aDouble).setScale(2,BigDecimal.ROUND_HALF_UP).toString();
        // 输出四舍五入的值
        jsonGenerator.writeNumber(number);
    }
}

属性注解设置:

    @JsonSerialize(using = MySerialize.class)
    private Double height = 3.1415926;

方法2:alibaba fastjson

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.80</version>
        </dependency>

配置xml

    <!-- 注解驱动 -->
    <mvc:annotation-driven>
        <mvc:message-converters>
            <!-- 阿里巴巴json -->
            <bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>application/json</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

可以用的注解

    @JSONField(name="name2")
    @JSONField(serialize = false)
    @JSONField(format = "yyyy年MM月dd日 HH:mm:ss")
    @JSONField(serialzeFeatures = SerializerFeature.WriteMapNullValue)
    @JSONField(serialzeFeatures = SerializerFeature.WriteNullStringAsEmpty)
    @JSONField(serializeUsing = MySerialize2.class)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值