簡體   English   中英

Jackson ObjectMapper從String序列化為JSON作為名稱-值

[英]Serialize to JSON as name-value from String by Jackson ObjectMapper

我有一些String,例如:

String value = "123";

當我通過ObjectMapper將此字符串序列化為json時:

objectMapper.writeValueAsString(value);

輸出為:

"123"

是否可以使用字符串名稱和字符串值來編寫String? 所需的輸出:

"value" : "123"

PS:我不想用一個字段來序列化一個String值的DTO對象。

您還可以使用Jackson JsonGenerator

try (JsonGenerator generator = new JsonFactory().createGenerator(writer)) {
     generator.writeStartObject();
     generator.writeFieldName("value");
     generator.writeString("123");
     generator.writeEndObject();
  }
}

如果您有純字符串,則序列化時會得到純字符串。 如果要將其包裝在一個對象中,請使用地圖作為最簡單的解決方案。

String value = "123";
Map<String, String> obj = new HashMap<>();
obj.put("value", value);

將其傳遞給映射器將產生以下內容:

{ "value": "123" }

如果將地圖更改為<String, Object> ,則幾乎可以傳遞任何您想要的內容,即使地圖內的地圖也可以正確序列化。

如果確實沒有封閉的花括號,則可以始終使用子字符串,但是如果您仍要序列化為JSON,那將是一個非常奇怪的用例。

創建地圖:

Map<String, String> map = new HashMap<>();
map.put("value", value);
String parsedValue = ObjectMapper.writeValueAsString(map);

您將獲得: {"value":"123"}

如果您使用的是Java 8,並且希望以自動化的方式進行操作而無需創建地圖或手動放置字符串變量名稱“值”,則需要遵循以下鏈接:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM