Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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 如何使用JSON动态创建POJO?_Java_Json_Jackson - Fatal编程技术网

Java 如何使用JSON动态创建POJO?

Java 如何使用JSON动态创建POJO?,java,json,jackson,Java,Json,Jackson,我有多个动态json模板,如下所示 JSON 1 { "param1": "testuser1", "param2": "testuser1@gmail.com" } JSON 2 { "param1": "testuser2", "param2": "testuser2@gmail.com", "param3": "New York" } JSON 3 { "param1": "testuser3" "pa

我有多个动态json模板,如下所示

JSON 1

{
      "param1": "testuser1",
      "param2": "testuser1@gmail.com"
}
JSON 2

{
      "param1": "testuser2",
      "param2": "testuser2@gmail.com",
      "param3": "New York"
}
JSON 3

{
      "param1": "testuser3"
      "param2": "testuser3@gmail.com",
      "param3": "New York",
      "param4": [
            {
                "sub-param1": "X",
                "sub-param2": "Y"
            },
            {
                "param1": "testuser",
                "param2": "testuser@gmail.com"
            }
          ]
}
我想在运行时将它们转换为JAVA对象,即在编译时不创建POJO。这可能吗?如果是,怎么做


我尝试使用Jackson lib将json转换为对象(对象类),但如何创建通用POJO或如何使用setter getter动态创建POJO?

您可能希望将json文档反序列化为
映射
,或者使用Jackson树模型,如下所示:

TypeReference type=newtypereference(){};
Map=mapper.readValue(json,类型);
JsonNode-JsonNode=mapper.readTree(json);

为什么不能使用JsonNode类?是的,我们不知道json的内容。这就是使用JsonNode和JsonObject类的要点。如果您不介意使用外部库,可以查看[jsonschema2pojo][1][1]:如果对象的用户在编译时不知道其中存在哪些字段,那么您应该如何访问此POJO中的字段?@user12290051您为什么认为需要动态创建一个类?实际上,我正在使用smooks framework从json创建edi文件,但smooks框架表示,在转换为edi或任何其他格式时定义了POJO。我创建了一个将json转换为edi的示例,但我希望将动态json文件转换为edi。所以我在寻找我是否能做到这一点?我试着思考,但没有luck@user12290051你试过上面描述的地图方法吗?是的,我试过了,谢谢,但是如何在smooks中使用这个需要检查。。