Apache Tika和Json

son*_*ing 6 json apache-tika

当我使用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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Gag*_*arr 6

JSON基于纯文本,因此当仅给出要使用的字节时,Tika报告它并不奇怪.

你的问题是你没有提供文件名,所以Tika没有那个可以使用.如果你有,Tika可以说bytes=plain text + filename=json => json并给你你想要的答案

你缺少的那条线是:

metadata.set(Metadata.RESOURCE_NAME_KEY, filename);
Run Code Online (Sandbox Code Playgroud)

所以固定的代码片段是:

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

有了它,你会得到你所期望的JSON答案