Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.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序列化Vertex JsonObject_Java_Json_Serialization_Jackson_Vert.x - Fatal编程技术网

Java 使用Jackson序列化Vertex JsonObject

Java 使用Jackson序列化Vertex JsonObject,java,json,serialization,jackson,vert.x,Java,Json,Serialization,Jackson,Vert.x,我在开发中使用了vertx和Jackson。在我的一个类中,我得到了一个类型为JsonObject的字段,如下所示: class User private String name; private JsonObject details; JsonObject details = new JsonObject().put("name", "value").put("another", "another") 此详细信息字段可以包含其他JSONObject或JSONArray,例如: {“

我在开发中使用了vertxJackson。在我的一个类中,我得到了一个类型为
JsonObject
的字段,如下所示:

class User
  private String name;
  private JsonObject details;
JsonObject details = new JsonObject().put("name", "value").put("another", "another")
此详细信息字段可以包含其他JSONObject或JSONArray,例如:
{“细节”:[{“街道”:“百老汇”},{“建筑”:20}]}

我没有这种结构的专用类,因为没有固定的结构,而且它可以变化。
详细信息对象的创建方式如下:

class User
  private String name;
  private JsonObject details;
JsonObject details = new JsonObject().put("name", "value").put("another", "another")
这个方法允许我在代码中存储任何结构的细节。因为我不需要在后端操作这些数据,所以我不想为其创建特殊的结构。
在我尝试使用Jackson序列化这个
JsonObject
之前,一切都正常。不幸的是,Jackson没有给我漂亮的JSON字符串,而是给了我用所有map的附加字段序列化的
map
对象


如何使用Jacksonvertx
JsonObject
进行序列化?

看,我看到了一个方法。我知道Jackson能够轻松地序列化地图

最后,事实证明,vertx已经有了自己的序列化程序实现。 只要使用他们的类来执行序列化(将使用Jackson undercover)就足够了


而且效果很好。

我建议使用以下方法创建:

新的JsonObject((Map)Json.mapper.convertValue(new User(),Map.class));

转换字符串需要时间。

您可以使用Jackson的JsonNode而不是JsonObject。不幸的是,我需要
JsonObject
。有很多代码依赖于它。这看起来效率很低:将用户对象序列化为JSON,然后反序列化(当调用JsonObject构造函数时),然后重新序列化(一旦序列化JsonObject以通过网络发送)。要从
User
转到
JsonObject
,而不使用中间字符串,请使用