gson 无法解析封装在TSV文件中的JSON文档

5f0d552i  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(146)

我有一个tsv文件,其中第4列是来自Web服务的json输出。例如:

{"title":"GloMop","fullText":"home page; file:/C:\\unzipped\\pythia—demo—pages\\pythia\\index.html, White Paper. Dated Jul. 6, 2005,.(Downloaded Jul. 6, 2005), 11 pgs"}

我正在阅读tsv文件,当我读取第4列时,我看到以下输出:

{"title":"GloMop","fullText":"home page; file:/C:\unzipped\pythia—demo—pages\pythia\index.html, White Paper. Dated Jul. 6, 2005,.(Downloaded Jul. 6, 2005), 11 pgs"}

并使用gson将其解析为json,我看到com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException
为了避免这种情况,我尝试转义\,并将replace("\\", "\\\\")添加到成功读取的第4列。
但是,现在的问题是,有另一个json字符串如下,它失败与com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException
第一个
我甚至尝试过使用下面的json字符串代码来转义相同的字符串,但在com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException中仍然失败:

private static String escapeJson(String raw)    {
        String escaped = raw;
        escaped = escaped.replace("\\", "\\\\");
        escaped = escaped.replace("\"", "\\\"");
        escaped = escaped.replace("\b", "\\b");
        escaped = escaped.replace("\f", "\\f");
        escaped = escaped.replace("\n", "\\n");
        escaped = escaped.replace("\r", "\\r");
        escaped = escaped.replace("\t", "\\t");
        escaped = escaped.replace("/", "\\/");
        return escaped;
    }

请让我知道是否有任何方法来确保字符很好地转义和处理的json?

lhcgjxsq

lhcgjxsq1#

这个工作没有任何问题;

@Test
public void t11(){
    String s = "{\"person\":[{\"initials\":\"J.\",\"name\":\"HEINZERING\"}],\"fullText\":\"R\\\\NTGENSTRAHLEN, Nr. Seiten 34-41, DE; u.a.; \\\"Technische Fortschritte in der NMR-Tomographie\"}";
    Gson gson = new Gson();
    Object o = gson.fromJson(s, Object.class);
    System.out.println(gson.toJson(o));
}

输出为

{"person":[{"initials":"J.","name":"HEINZERING"}],"fullText":"R\\NTGENSTRAHLEN, Nr. Seiten 34-41, DE; u.a.; \"Technische Fortschritte in der NMR-Tomographie"}

相关问题