MappingJackson2HttpMessageConverter(undone)

@JsonInclude

  The @JsonInclude annotation is used to exclude properties or fields of a class under certain conditions. This is defined using the JsonInclude.Include enum. This enum contains constants that determine whether or not to exclude the property. The constants are:

  • ALWAYS
  • NON_DEFAULT
  • NON_EMPTY
  • NON_NULL

spring mvc默认是支持yyyy-MM-dd格式的字符串转换为java的java.util.Date.包括spring mvc框架本身和spring mvc支持的jackson.
对于其它格式的日期的字符串与Java的Date对象相互转化,一样可分为两种情况:
A:一种普通请求,前台的日期字符串与后台的Java Date对象转化,此情况,应使用spring mvc本身的内置日期处理.
B:另一种将参数写进请求体里面,使用application/json这样的mediaType发请求,对于此情况,应使用Jackson的反序列化来处理.


// 日期格式化输出
objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));

// 将null序列化为空字符串
objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
            @Override
            public void serialize(Object value, JsonGenerator jg, SerializerProvider sp) throws IOException {
                jg.writeString("");
            }
        });

参考资料

  1. Jackson Annotations for JSON (Part 1): Serialization and
    Deserialization
  2. Jackson Annotations for JSON (Part 2): Serialization
这是一个使用mui+mint+vue2.x+vue-router+vuex+webpack制作的待办事项项目实例,样式使用了vue移动端mint ui框架,原生手机能力偏重于mui框架。该项目实现了以下功能: ①勾选按钮可以选择是否已完成; ②若已完成(被勾选),则字体变暗和被划去;若未完成(没有被勾选),则保持不变; ③每条待办事项可自由选择是否删除; ④可自由添加事务进入待办事项中,回车键效果一样; ⑤有数字提示总事项和未完成事项。 <<代码示例>> ```html <template> <div class="todo"> <div class="header"> <h1>待办事项</h1> <div class="add"> <input type="text" placeholder="添加待办事项" v-model="newTodo" @keyup.enter="addTodo"> </div> </div> <div class="content"> <ul> <li v-for="(todo, index) in todos" :key="index"> <div class="checkbox"> <input type="checkbox" v-model="todo.done" @change="updateTodo"> </div> <div class="text" :class="{done: todo.done}"> {{ todo.text }} </div> <div class="delete" @click="deleteTodo"> <i class="iconfont icon-delete"></i> </div> </li> </ul> </div> <div class="footer"> <div class="total"> 总事项:{{ todos.length }} </div> <div class="undone"> 未完成:{{ undone }} </div> </div> </div> </template> <script> export default { data() { return { newTodo: '', todos: [ { text: '学习Vue', done: false }, { text: '学习Vuex', done: false }, { text: '学习Vue Router', done: false } ] } }, computed: { undone() { return this.todos.filter(todo => !todo.done).length } }, methods: { addTodo() { if (this.newTodo.trim() === '') return this.todos.push({ text: this.newTodo, done: false }) this.newTodo = '' }, updateTodo() { localStorage.setItem('todos', JSON.stringify(this.todos)) }, deleteTodo() { this.todos.splice(index, 1) } } } </script> <style scoped> .todo { .header { display: flex; justify-content: space-between; align-items: center; padding: 10px; background-color: #42b983; color: #fff; h1 { font-size: 20px; font-weight: normal; margin: 0; } .add { flex: 1; margin-left: 10px; input { width: 100%; padding: 5px; border: none; border-radius: 5px; outline: none; font-size: 16px; } } } .content { ul { list-style: none; margin: 0; padding: 0; li { display: flex; align-items: center; padding: 10px; border-bottom: 1px solid #eee; .checkbox { margin-right: 10px; input { width: 20px; height: 20px; } } .text { flex: 1; font-size: 16px; &.done { color: #999; text-decoration: line-through; } } .delete { i { font-size: 20px; color: #999; } } } } } .footer { display: flex; justify-content: space-between; align-items: center; padding: 10px; background-color: #eee; .total, .undone { font-size: 16px; } } } </style> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值