Как получить файл или поток из JSONObject? - PullRequest
1 голос
/ 01 февраля 2020

Как JSONObject из Twitter4J преобразуется в IOFile для использования с JsonParser из BaseX?

Итак, вы хотите использовать Twitter4J для получения файла или поток.

JsonParser выглядит работает с a File отлично:

JsonParser

public JsonParser(IO source,
          MainOptions opts,
          JsonParserOptions jopts)
           throws java.io.IOException

Constructor.

Parameters:
    source - document source
    opts - database options
    jopts - parser options
Throws:
    java.io.IOException - I/O exception

, хотя другие IO работает:

org.basex.io
Class IO

    java.lang.Object
        org.basex.io.IO 

    Direct Known Subclasses:
        IOContent, IOFile, IOStream, IOUrl 

Как File получается у JSONObject здесь?

Фрагмент с использованием Twitter4J:

private JSONObject jsonOps(Status status) throws JSONException, BaseXException {
    String string = TwitterObjectFactory.getRawJSON(status);
    JSONObject json = new JSONObject(string);
    String language = json.getString("lang");
    log.fine(language);
    return json;
}

1 Ответ

0 голосов
/ 01 февраля 2020

Запись JSONObject в файл из Twitter4J, кажется, работает, по крайней мере, файл выглядит правильно при открытии вручную:

public void writeJsonToFile(String fileName) throws FileNotFoundException, UnsupportedEncodingException, IOException {
    FileOutputStream fileOutputStream = null;
    OutputStreamWriter outputStreamWriter = null;
    BufferedWriter bufferedWriter = null;
    fileOutputStream = new FileOutputStream(fileName);
    outputStreamWriter = new OutputStreamWriter(fileOutputStream, "UTF-8");
    bufferedWriter = new BufferedWriter(outputStreamWriter);
    bufferedWriter.write(tweets.toString());
    bufferedWriter.close();
    outputStreamWriter.close();
    fileOutputStream.close();
}

И как только файл записан, кажется, что это довольно легко "разбирать" JSON или, по крайней мере, создавать экземпляр синтаксического анализатора, как:

private void parseJsonFile(String fileName) throws IOException {
    JsonParser jsonParser = new JsonParser(new IOFile(fileName), new MainOptions());
}

полный код на github .

Ни в коем случае это не полный решение. На самом деле, кажется, что это клочок записать JSON в файл вообще - но это так.

Кажется, единственный способ переместить JSON данные из Twitter4J в BaseX, или, по крайней мере, большинство прагматических c. Другие решения приветствуются.

...