首页 > 解决方案 > 如何在java + SpringBoot中生成带有转义字符“\ n”的JSON

问题描述

我在java中使用GSON生成这个json(当前)

{
  "scheduleAt": "2020-01-16T09:45:29.361Z",
  "serviceType": "TRUCK",
  "stops": [
    {
      "location": {
        "lat": "109.063753",
        "lng": "312.998866"
      },
      "addresses": {
        "en_IN": {
          "displayString": "Please bring the BAG",
          "country": "TH"
        }
      }
    }
  ]
 }

我期待以下一个:(预期)

{\n \"scheduleAt\": \"2018-12-31T14:30:00.00Z\",\n \"serviceType\": \"MOTORCYCLE\",\n \"requesterContact\": { \"name\": \"Peter Pan\", \"phone\": \"232\" },\n \"stops\": [\n {\n \"location\": { \"lat\": \"-6.255431000000001\", \"lng\": \"106.60114290000001\" },\n \"addresses\": {\n \"en_ID\": {\n \"displayString\":\n \"Jl. Perum Dasana Indah No.SD 3/ 17-18, RT.3/RW.1, Bojong Nangka, Klp. Dua, Tangerang, Banten 15810, Indonesia\",\n \"country\": \"ID\"\n }\n }\n },\n {\n \"location\": { \"lat\": \"-6.404722800000001\", \"lng\": \"106.81902130000003\" },\n \"addresses\": {\n \"en_ID\": {\n \"displayString\": \"Jl. Kartini, Ruko No. 1E, Depok, Pancoran MAS, Kota Depok, Jawa Barat 16431, Indonesia\",\n \"country\": \"ID\"\n }\n }\n }\n ],\n \"deliveries\": [\n {\n \"toStop\": 1,\n \"toContact\": {\n \"name\": \"mm\",\n \"phone\": \"9999999\"\n }\n }\n ]\n}\n'

如果我们在 javascript 中使用 JSON.stringfy(),我们会得到上面的 json。谁能告诉我如何在 JAVA 中实现这一点

标签: javajsonrestspring-boot

解决方案


您可以使用杰克逊对象映射器来实现这一点。

ObjectMapper mapper = new ObjectMapper();
value = mapper.writeValueAsString(obj);

参考:

https://www.programcreek.com/java-api-examples/?class=com.fasterxml.jackson.databind.ObjectMapper&method=writeValueAsString

https://www.baeldung.com/jackson-object-mapper-tutorial


推荐阅读