JacksonJsonNode序列化

nc1teljy  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(121)

Lambda有一个内置的JacksonSerializer,所以当你的方法返回一个对象时,它会将它序列化为JSON表示。
我有一个由以下属性组成的对象:

private String name;
private JsonNode model;
private JsonNode field;

为了简单起见,我省略了类的所有其余部分,但它有getter/setter等。
通常当我在我的原生应用程序中运行它时,它运行得很好。JsonNode树结构被呈现为JSON。例如:

{
    "name": "example",
    "model": {
        "key": "ipAddress",
        "type": "input",
        "templateOptions": {
            "label": "IP",
            "placeholder": "Something",
            "description": "The IP address.",
            "required": true
        }
    },
    "field": {
        "key": "pro",
        "type": "input",
        "templateOptions": {
            "label": "Pro",
            "placeholder": "Something",
            "description": "Pro Example",
            "required": false
        }
    }
}

然而,由于一些未知的原因,当我在Lambda中运行这个函数时,实际的JsonNode对象本身(不是树,而是 Package 器对象)被序列化了。

{
  "name": "example",
  "model": {
    "nodeType": "NULL",
    "array": false,
    "null": true,
    "valueNode": true,
    "containerNode": false,
    "missingNode": false,
    "object": false,
    "pojo": false,
    "number": false,
    "integralNumber": false,
    "floatingPointNumber": false,
    "short": false,
    "int": false,
    "long": false,
    "float": false,
    "double": false,
    "bigDecimal": false,
    "bigInteger": false,
    "textual": false,
    "boolean": false,
    "binary": false
  },
  "fields": {
    "nodeType": "ARRAY",
    "array": true,
    "null": false,
    "valueNode": false,
    "containerNode": true,
    "missingNode": false,
    "object": false,
    "pojo": false,
    "number": false,
    "integralNumber": false,
    "floatingPointNumber": false,
    "short": false,
    "int": false,
    "long": false,
    "float": false,
    "double": false,
    "bigDecimal": false,
    "bigInteger": false,
    "textual": false,
    "boolean": false,
    "binary": false
  },
  "schedule": "0 0/1 * 1/1 * ? *"
}

是否有人对为什么会发生这种情况有任何见解,以及对解决方案/变通办法有任何建议?
最新消息:
我特别使用了JsonNode,因为modelfield是动态的,并且在运行时提供,所以我不会提前知道结构。

ctehm74n

ctehm74n1#

假设“model”和“field”总是对象,而不是数组,你可以为它们使用Map<String, Object>。对于子对象,只需添加其他Map作为值。

private String name;
private Map<String, Object> model;
private Map<String, Object> field;

相关问题