Java Jackson-JsonNode序列化
我正在使用一个Java8函数。Lambda有一个内置的Jackson序列化程序,因此当您的方法返回一个对象时,它会将其序列化为JSON表示 我有一个由以下属性组成的对象:Java Jackson-JsonNode序列化,java,amazon-web-services,lambda,jackson,jackson2,Java,Amazon Web Services,Lambda,Jackson,Jackson2,我正在使用一个Java8函数。Lambda有一个内置的Jackson序列化程序,因此当您的方法返回一个对象时,它会将其序列化为JSON表示 我有一个由以下属性组成的对象: private String name; private JsonNode model; private JsonNode field; 为了简单起见,我省略了这个类的所有其他部分,但它有getter/setter等 通常,当我在我的本机应用程序中运行它时,它工作得非常好。JsonNode树结构呈现为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对象本身(不是树而是包装器对象)被序列化。所以我得到了这个:
{
"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,因为模型
和字段
是动态的,并且是在运行时提供的。因此,我不会提前知道结构。如果“模型”和“字段”始终是对象,而不是数组,则可以使用映射。对于子对象,只需添加其他贴图作为值
private String name;
private Map<String, Object> model;
private Map<String, Object> field;
私有字符串名称;
私有地图模型;
私有地图字段;
如果“model”和“field”始终是对象,而不是数组,则可以为它们使用映射。对于子对象,只需添加其他贴图作为值
private String name;
private Map<String, Object> model;
private Map<String, Object> field;
私有字符串名称;
私有地图模型;
私有地图字段;
我不能!我特别使用JsonNode,因为对象是动态的。您应该在问题中提到这一点。问题是对象
作为JSON字符串到达系统,并且必须转换为java对象。因此,即使我将其定义为对象
它仍然是JsonNode
。我无法更改模型
和“field的类型
。它们都需要是
JsonNode`。我面临着完全相同的问题,因为在我们的系统中,com.fasterxml.jackson.databind.JsonNode
正在进行反序列化,而我们正在用org.codehaus.jackson.JsonNode
进行序列化,我不能!我特别使用JsonNode,因为对象是动态的。您应该在问题中提到这一点。问题是对象
作为JSON字符串到达系统,并且必须转换为java对象。因此,即使我将其定义为对象
它仍然是JsonNode
。我无法更改模型
和“field的类型
。它们都需要是
JsonNode`。我面临着完全相同的问题,因为在我们的系统中,com.fasterxml.jackson.databind.JsonNode
正在进行反序列化,而我们正在使用org.codehaus.jackson.JsonNode