Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jackson-JsonNode序列化_Java_Amazon Web Services_Lambda_Jackson_Jackson2 - Fatal编程技术网

Java Jackson-JsonNode序列化

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。例如: {

我正在使用一个Java8函数。Lambda有一个内置的Jackson序列化程序,因此当您的方法返回一个对象时,它会将其序列化为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