假设我使用Jackson来对POJO进行序列化和反序列化。我有很多这样的课程:
const express = require('express');
const router = express.Router();
const connection = require('../connection');
router.get('/',(req,res)=>{
res.send(products());
})
async function products(){
// console.log(products)
return await getProducts();
}
function getProducts(){
return new Promise((resolve,reject) =>{
connection.query('SELECT brand,description from products limit 100', function (err, rows, fields) {
if (err) throw err
resolve(JSON.stringify(rows))
})
})
}
module.exports = router;
filteredLists() {
return data.filter(
function(item) {
return item.content.details.find(
function(detail) {
return detail.toLowerCase().match(this.search)
}.bind(this)
)
}.bind(this)
)
}
是我从外部系统收到的大型JSON对象。我想以三种不同的方式使用class Foo {
String field1;
Bar field2;
// ...
Baz baz;
}
:
baz
并包含Foo
甚至不费力地解析它,就好像我已将其声明为Foo
一样。baz
并包含@JsonRawValue String baz
,就像我收到的一样,除了漂亮打印,就好像我已将其声明为Foo
一样。baz
传递给我的业务逻辑,并将Map<String, Object> baz
反序列化为POJO,如上面的代码所示。执行此操作的一种方法是声明三个类,其中Foo
字段以三种不同的方式声明。我还可以将2)和3)与baz
和baz
组合成一个类,以捕获我不认识的所有属性。
但是在声明仅一个@JsonAnySetter
类的同时,有没有一种干净的方法来支持上述所有三个用例?