java map如何序列化_带有Map的Java对象的jackson序列化?

我有一个像这样的

Java类,并希望使用Jackson转换为

JSON.谢谢你的帮助.

> Java类

public class myClass {

String Id;

Map optionalData = new LinkedHashMap();

}

>如何使用Jackson ObjectMapper将其序列化为JSON?

例如,假设optionalData是一个Map,保存两个条目和

我希望输出如下.请注意,optionalData的键/值可以动态更改(因此,我不能为此创建“静态”Java对象而不使用Map)

[

{

id: "book-id1",

type: "book",

year: "2014"

},

{

id: "book-id2",

type: "book",

year: "2013"

}

]

最佳答案 您需要编写自己的

Jackson JsonSerializer以根据需要从Java对象创建自定义JSON字符串.

以下是不错的帖子以及示例

这里有些例子

以下是使用GSON Serialiser的代码

List list = new ArrayList();

MyClass myClass1 = new MyClass();

myClass1.setId("book-id1");

myClass1.getOptionalData().put("type", "book");

myClass1.getOptionalData().put("year", "2014");

list.add(myClass1);

MyClass myClass2 = new MyClass();

myClass2.setId("book-id2");

myClass2.getOptionalData().put("type", "book");

myClass2.getOptionalData().put("year", "2013");

list.add(myClass2);

class MyClassSerialiser implements JsonSerializer {

@Override

public JsonElement serialize(final MyClass obj, final Type typeOfSrc,

final JsonSerializationContext context) {

final JsonObject jsonObject = new JsonObject();

jsonObject.addProperty("id", obj.getId());

Map optioanlData = obj.getOptionalData();

if (optioanlData.size() > 0) {

for (Map.Entry entry : optioanlData.entrySet()) {

jsonObject.addProperty(entry.getKey(), entry.getValue());

}

}

return jsonObject;

}

}

String jsonString = new GsonBuilder().setPrettyPrinting().

.registerTypeAdapter(MyClass.class, new MyClassSerialiser()).create()

.toJson(list);

System.out.println(jsonString);

输出:

[

{

"id": "book-id1",

"type": "book",

"year": "2014"

},

{

"id": "book-id2",

"type": "book",

"year": "2013"

}

]

你可能感兴趣的:(java,map如何序列化)