gson Json将字符串中的&转换为

fbcarpbf  于 2022-11-06  发布在  其他
关注(0)|答案(2)|浏览(350)

我试图从pdf中提取文本并将其写入一个json文件。在提取Unicode字符时,Json将所有的&转换为\u0026。例如,我的实际字符串是&#1588 .(代表)。它可以正确打印到.txt文件,控制台等。但当我试图将此字符串打印到一个Json文件时,它显示\u0026#1588;
我使用的是Java,代码是

Gson gson = new Gson();
String json = gson.toJson(pdfDoc);

注意:pdfDoc是一个对象,包含了输入PDF文档中字符的所有细节(位置、颜色、字体等)。我使用的是gson-2.2.1.jar

1bqhqjot

1bqhqjot1#

这实际上是一个有效的(但不是必需的)编码。* 任何 * 字符 * 都可以 * 使用JSON中的unicode转义进行编码,并且任何有效的JSON解析库 * 都必须 * 能够解释这些转义。
&不是需要编码的字符(参见stringat json.org的定义),但是有一些JSON库在编码方面非常“激进”,这通常不是问题,除非你不需要使用符合要求的JSON解析器来处理结果JSON。
GsonBuilder.disableHtmlEscaping()将帮助您在绝对需要时关闭该特性。

2eafrhcq

2eafrhcq2#

使用以下代码在Swift中解码unsplash.com JSON文件中的\u0026:

extension String {
    func utf8DecodedString()-> String {
        let data = self.data(using: .utf8)
        let message = String(data: data!, encoding: .nonLossyASCII) ?? ""
        return message
    }

    func utf8EncodedString()-> String {
        let messageData = self.data(using: .nonLossyASCII)
        let text = String(data: messageData!, encoding: .utf8) ?? ""
        return text
    }
}

let jsonOriginal = #"Let\u2019s not be na\357ve \u0026 dumb!"#

print(jsonOriginal)
print("----")

let jsonDecoded = jsonOriginal.utf8DecodedString()
print(jsonDecoded)

let jsonEncoded = jsonDecoded.utf8EncodedString()
print(jsonEncoded)

奇怪的是,编码会留下&,而不会重新编码到\u0026??

相关问题