【问题标题】:Splitt several JSON Strings in a single Line在一行中拆分多个 JSON 字符串
【发布时间】:2019-02-18 13:29:00
【问题描述】:

我有一个 txt 文件,它是包含多个 JSON 字符串的单行文件。我的问题是我不知道如何获取每个 JSON 对象。

try {
       FileReader fr = new FileReader("SelectedChoice.txt");
       BufferedReader br = new BufferedReader(fr);

       String zeile ="";

       while((zeile = br.readLine())!=null) {
           System.out.println(zeile);
           JSONObject choice = new JSONObject(zeile);
           System.out.println(choice);
       }

       br.close();
       fr.close();
   } catch (FileNotFoundException e) {
    e.printStackTrace();
   } catch (IOException e) {
    e.printStackTrace();
   }

这是需要转换的字符串:

{"Item":"MasterNode","Choice 1":1,"Choice 2":0,"Choice 3":-1}{"Item":"WorkerNode","Choice 1":1,"Choice 2":0,"Choice 3":-1}

此代码仅转换行中的第一个 JSON 字符串,而我想转换所有字符串。

【问题讨论】:

  • JSON第二行后面有换行符吗?
  • 对不起,实际上是一大行。我已经编辑了我的帖子。
  • 它实际上不是像您现在发布的那样有效的 JSON。我可以想象,因此您遇到了问题。要么将每个对象放在单独的行上,要么将你的对象放在一个数组中,并确保 JSON 是有效的。您可以在这里测试 JSON 是否有效:jsonformatter.curiousconcept.com

标签: java json filereader


【解决方案1】:

所以我在我的 IDE 中将其拉起并下载了 org.json 库,它运行得很好。由于您读取文件的方式,您可能会丢失一行而只保留最后一行。如果您想保存JSONObject,您可以随时尝试将JSONObject 保存在ArrayList 或其他类似的集合中...

Collection<JSONObject> JSONObjects = new ArrayList<>();
try {
    FileReader fr = new FileReader("SelectedChoice.txt");
    BufferedReader br = new BufferedReader(fr);

    String zeile ="";

    while((zeile = br.readLine())!=null) {
        System.out.println(zeile);
        JSONObject choice = new JSONObject(zeile);
        System.out.println(choice);
        JSONObjects.add(choice);
    }

    br.close();
    fr.close();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

您可以在文件读取完毕后访问该集合。

希望这会有所帮助!祝你好运!

P.S.如果您有任何其他问题,请随时提出!

编辑

所以我刚刚在上面的 cmets 中读到,您认为它应该是一行。如果>您希望too组分开,您可能希望将新行>放回。如果您希望它是一个JSONObject,您可能会遇到 > 语法错误。尝试在两组值之间添加,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 2013-05-28
    • 2016-02-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多