【问题标题】:Apache Tika and JsonApache Tika 和 Json
【发布时间】:2013-10-25 12:45:18
【问题描述】:

当我使用 Apache Tika 从内容中确定文件类型时。 XML文件很好,但不是json。如果内容类型是 json,它将返回“text/plain”而不是“application/json”。

有什么帮助吗?

public static String tiKaDetectMimeType(final File file) throws IOException {
    TikaInputStream tikaIS = null;
    try {
        tikaIS = TikaInputStream.get(file);
        final Metadata metadata = new Metadata();
        return DETECTOR.detect(tikaIS, metadata).toString();
    } finally {
        if (tikaIS != null) {
            tikaIS.close();
        }
    }
}

【问题讨论】:

    标签: json apache-tika


    【解决方案1】:

    JSON 是基于纯文本的,因此 Tika 在仅给出可使用的字节时报告它也就不足为奇了。

    你的问题是你没有提供文件名,所以 Tika 没有它可以使用。如果你有,Tika 可以说bytes=plain text + filename=json => json 并给你你期望的答案

    您缺少的行是:

    metadata.set(Metadata.RESOURCE_NAME_KEY, filename);
    

    所以固定的代码 sn-p 将是:

    tikaIS = TikaInputStream.get(file);
    final Metadata metadata = new Metadata();
    metadata.set(Metadata.RESOURCE_NAME_KEY, file.getName());
    return DETECTOR.detect(tikaIS, metadata).toString();
    

    这样,您将得到预期的 JSON 答案

    【讨论】:

    • 如果您不处理文件,或者不能信任文件扩展名作为提示,有人有什么建议吗?
    • @milletron 将文件的内容传递给 Apache Tika,它也会进行基于 mime 魔法的检测
    • 谢谢@Gagravarr。是的,我可以告诉 mime-detection 总体上适用于我推送的十几个不同的字节流,但仍然无法将 Json 与纯文本区分开来(至少 1.15)。我想必须编写一个类似于 XML 和 HTML 的新检测器?我很惊讶 JSON 还没有包含在内。
    • @milletron JSON 格式一开始并没有任何众所周知的魔力,除了寻找 {"[" 这不是唯一的,json 也不总是这样,它是艰难...
    【解决方案2】:

    对于那些不处理文件的人,我发现最简单的方法是通过 Jackson 运行有效负载以查看它是否可以被解析。如果 Jackson 可以解析它,您就知道 1) 您正在使用 JSON 并且 2) JSON 是有效的。

    private static final ObjectMapper MAPPER = new ObjectMapper();
    public static boolean isValidJSON(final String json) {
        boolean valid = true;
        try {
            MAPPER.readTree(json);
        } catch (IOException e) {
            valid = false;
        }
        return valid;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      • 2018-10-28
      • 1970-01-01
      • 2021-01-20
      • 2014-01-15
      • 2016-06-03
      相关资源
      最近更新 更多