0
我正在使用带有Java 8功能的AWS Lambda。 Lambda有一个内置的Jackson Serializer,所以当你的方法返回一个对象时,它将它序列化为一个JSON表示。Jackson JsonNode序列化
我有一个是由以下性质的onject:
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对象本身(而不是树,但包装对象)序列化。所以,我得到这个:
{
"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 * ? *"
}
没有任何人有任何见解,为什么发生这种情况和解决方案/解决方法有什么建议?
UPDATE:我专门用一JsonNode因为model
和field
是动态的,在运行时提供
。所以我不会提前知道结构。
我不能!我特别使用JsonNode,因为对象是动态的。 – tarka
你应该在你的问题中提及。 – rmlan
问题在于'Object'作为JSON字符串到达系统,必须转换为java对象。所以即使我将它定义为一个Object,它仍然是一个JsonNode。 – tarka