Gson - 自动报价(“)转义?

2022-09-01 03:15:15

我在我的Java EE服务器上使用GSON为视图提供一些json。在某些对象中,我有很长的文本,可以包含任何内容(例如“多么”伟大“的新闻!

我确信默认情况下GSON不会转义双引号,因此它不会生成有效的JSON。

有没有一个好方法可以做到这一点?


答案 1

也许我不理解你的问题,但我能够让GSON处理带引号的字符串,而无需任何设置或更改。

import com.google.gson.Gson;

public class GSONTest {

    public String value;

    public static void main(String[] args) {
        Gson g = new Gson();
        GSONTest gt = new GSONTest();
        gt.value = "This is a \"test\" of quoted strings";
        System.out.println("String: " + gt.value);
        System.out.println("JSON: " + g.toJson(gt));
    }
}

输出:

String: This is a "test" of quoted strings
JSON: {"value":"This is a \"test\" of quoted strings"}

也许我不明白你在问什么?


答案 2

尝试使用 setPrettyPrinting with DisableHtml escaping。

import com.google.gson.Gson; 

Gson gson = new GsonBuilder().setPrettyPrinting().disableHtmlEscaping().create();
 JsonParser jp = new JsonParser();
 JsonElement je = jp.parse(jsonArray.toString());
 System.out.println( gson.toJson(je));