我按照本教程阅读了我之前创建的 json 文件

https://www.tutorialspoint.com/how-to-read-the-contents-of-a-json-file-using-java

我用 java swing 和 jFile Chooser 加入了这个。 下面是代码:

fileChooser = new JFileChooser();
        fileChooser.setDialogTitle("Select a file to open");
        JSONParser jsonParser = new JSONParser();
        int returnValue = fileChooser.showOpenDialog(null);
        // int returnValue = jfc.showSaveDialog(null);

        if (returnValue == JFileChooser.APPROVE_OPTION) {
            File selectedFile = fileChooser.getSelectedFile();
                        try{
                            JSONObject jsonObject = (JSONObject) jsonParser.parse(new FileReader(selectedFile.toString()));
                            JTree tree = (JTree) jsonObject.get("JTree");
                            Connection conn = (Connection) jsonObject.get("Connection");
                            new Principale(tree, conn). setVisible(false);
                        }
                        catch(Exception e){
                            e.printStackTrace();
                        }

        }

如果我尝试打印 selectedFile.toString() 它返回正确的路径,但是当我运行项目时,当我得到 .parse() 时出现此错误:

在 org.json.simple.parser.Yylex.yylex(Yylex.java:610) 在 org.json.simple.parser.JSONParser.nextToken(JSONParser.java:269) 在 org. json.simple.parser.JSONParser.parse(JSONParser.java:118) 在 org.json.simple.parser.JSONParser.parse(JSONParser.java:92)

这是我按照本教程使用 java swing 中的另一个类创建的文件 .json:

https://www.tutorialspoint.com/how-to-write-create-a-json-file-using-java

{"JTree":javax.swing.JTree[,0,0,167x818,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.synth.SynthBorder@3271444,flags=16777576,maximumSize=,minimumSize=,preferredSize=,editable=false,invokesStopCellEditing=false,largeModel=false,rootVisible=true,rowHeight=0,scrollsOnExpand=true,showsRootHandles=true,toggleClickCount=2,visibleRowCount=20],"Connection":oracle.jdbc.driver.T4CConnection@556a66b7}

如果有人能告诉我如何解决,我将不胜感激。

编辑

这就是我使用 java swing ad jFileChooser 创建 json 文件的方式

JFrame parentFrame = new JFrame();
        //Creating a JSONObject object
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("JTree", (JTree) tree);
        jsonObject.put("Connection", (Connection) conn);
        saveChooser = new JFileChooser();
        saveChooser.setDialogTitle("Specify a file to save");   

        int userSelection = saveChooser.showSaveDialog(parentFrame);

        if (userSelection == JFileChooser.APPROVE_OPTION) {
            File fileToSave = saveChooser.getSelectedFile();
            System.out.println("Save as file: " + fileToSave.getAbsolutePath());
            try{
                FileWriter myObj = new FileWriter(fileToSave.getAbsolutePath() + ".json");
                myObj.write(jsonObject.toJSONString());
                myObj.close();
            }
            catch(IOException ie){
                ie.printStackTrace();
            }
            catch(Exception e){
            e.printStackTrace();
            }
        }

#1楼 票数:0

问题不在于您的代码读取 JSON 的方式。

真正的问题是您尝试读取的文件不包含有效的 JSON。 JSON 解析器无法理解。 (没有 Java 解析器能够理解它!)。

假设的解决方案将是以下之一:

  • 修复生成文件的程序以生成有效的 JSON。

  • 编写一个自定义解析器来读取文件。

但是,看起来生成文件的代码已经在javax.swing.JTree对象和 JDBC Connection对象上调用了toString以徒劳地尝试序列化它们。 不幸的是,在任何有用的意义上,这些类都不是可序列化的。 即使您可以解析文件中的文本,您也无法重建JTreeConnection

所以你可能需要重新考虑你正在尝试做什么。 你究竟想用这段代码和相应的序列化代码实现什么? 你实际上在尝试保存什么......为什么......还有另一种方法来实现你想要做的事情吗?

  ask by Luana Mantovan translate from so

未解决问题?本站智能推荐:

1回复

位置67处的意外字符(j)[重复]

这个问题已经在这里有了答案: 什么是JSON? [已关闭] 6个答案 我有一个json文件,其中包含表示某些形状的json数组, 错误 这是我的代码来解析 我想读取此文件并创建这些形状并返回形状数组,但是我得到了任何帮助吗?
3回复

JSON Java-位置59处的意外字符(a)

我正在尝试解析以下JSON。 但是遇到异常请帮忙。 这是Java代码: 我得到的输出和异常是: 请帮帮我。 先感谢您。
1回复

位置2 JSON解析器(Java)处的意外字符(“)

这是我的JSON文件开头: 这是我的解析器: 我正在尝试使用FileReader以及JSON和JSON-Simple库通过此JSONfile进行解析。 我认为我的JSON文件格式正确,但是我不知道如何克服此错误:
1回复

Json System.err:位置0处的意外字符()。仅来自php

当我拥有http://www.example.com/json.txt之类的主机字符串时,一切正常,但是当我拥有www.example.com/index.php?data=data&data2=data2类的主机字符串时,我得到以下错误: W / System.err:位置
1回复

继续收到此错误“位置1处的意外字符()”。

我遇到了这个问题,当我在命令行中运行这个简单程序时,我总是收到这个奇怪的错误 这是Json文件 {"count":"21740"} 这是代码 但我总是得到这个错误 我已经在http://jsonlint.com/上验证了json文件 我不知道我在这里做错了
1回复

W / System.err:位置0处的意外字符()

我试图通过以下链接解析json的回复: https : //www.move2mart.com/wp-json/wp/v2/pages ? slug = watches ,无论我做什么,这都是我得到的。 W / System.err:位置0处的意外字符()。 } 日志回
3回复

在java中解析json字符串:位置1处的意外字符(P)

我正在尝试解析json字符串,表示如下: json viewer 目前我正在使用这个代码导致Unexpected character (P) at position 1.给出异常Unexpected character (P) at position 1. ,请建议如何解决,因为我已用G
1回复

位置0处出现意外字符(i)。-使用Java进行JSON解析

那就是我要解析的JSON的摘要。 这是我正在使用的代码: 由于某些原因,在位置0的错误处引发了意外的字符(i)。 据我所知,JSON文件已正确格式化以进行解析,并且代码是可靠的,所以我不明白为什么这行不通。 谢谢。