Обратный слэш Escape String с помощью GSON - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь преобразовать мою хэш-карту в вывод с красивой JSON-печатью.

Я попробовал GSON и считаю, что есть какая-то проблема с обработкой строки в качестве входных данных внутри карты. Есть ли другой способ сделать это?

Map<String, String> map = new LinkedHashMap();
Gson gson = new GsonBuilder().enableComplexMapKeySerialization().setPrettyPrinting().create();
                    map.put("Intro", Map_to_String);
                    map.put("Output", String_Val);
                    System.out.println(gson.toJson(map));

Выход:

{
  "Intro": {\"No\":0,\"Cast\":2},
  "Output": "123"
}

Требуемый вывод:

{
  "Intro": {"No":0,"Cast":2},
  "Output": "123"
}

1 Ответ

1 голос
/ 14 марта 2019

Вам необходимо десериализовать Map_to_String обратно к объекту - Map в этом случае и после этой сериализации снова.

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;

import java.lang.reflect.Type;
import java.util.LinkedHashMap;
import java.util.Map;

public class GsonApp {

    public static void main(String[] args) {
        Map<String, Object> map = new LinkedHashMap<>();
        Gson gson = new GsonBuilder()
                .enableComplexMapKeySerialization()
                .setPrettyPrinting()
                .create();

        String jsonString = "{\"No\":0,\"Cast\":2}";

        Type mapType = new TypeToken<Map<String, String>>() {}.getType();
        map.put("Intro", gson.fromJson(jsonString, mapType));
        map.put("Output", "123");
        System.out.println(gson.toJson(map));
    }
}

Печать:

{
  "Intro": {
    "No": "0",
    "Cast": "2"
  },
  "Output": "123"
}
...