杰克逊:属性可以是原始,任意对象或POJO

时间:2018-11-23 08:35:54

标签: jackson

假设我使用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; }

  1. 序列化baz并包含Foo甚至不费力地解析它,就好像我已将其声明为Foo一样。
  2. 漂亮打印baz并包含@JsonRawValue String baz,就像我收到的一样,除了漂亮打印,就好像我已将其声明为Foo一样。
  3. baz传递给我的业务逻辑,并将Map<String, Object> baz反序列化为POJO,如上面的代码所示。

执行此操作的一种方法是声明三个类,其中Foo字段以三种不同的方式声明。我还可以将2)和3)与bazbaz组合成一个类,以捕获我不认识的所有属性。

但是在声明仅一个@JsonAnySetter类的同时,有没有一种干净的方法来支持上述所有三个用例?

0 个答案:

没有答案