Java:JSON.simple Parser - 将 BufferedReader 的 readUTF 字符串转换为 Reader

问题描述

我正在编写一个服务器,它接收一个 JSON 字符串,然后使用 JSON.simple 包将其解析为 Java JSONObjecthttps://mkyong.com/java/json-simple-example-read-and-write-json/

我正在使用 DataInputStream 来读取输入,但是当我尝试通过写入来解析输入时:

JSONObject json = (JSONObject) parser.parse(input.readUTF());

它说parse(Java.io.Reader) can not be applied to (java.lang.String)。那么如何将 input.readUTF() 转换为所需的 reader 格式?

作为参考,我接收和解析 JSON 输入的代码

    public class ReceiveThread implements Runnable{
        private DataInputStream input;

        public ReceiveThread(DataInputStream input){
            this.input = input;
        }

        @Override
        public void run() {
            JSONParser parser = new JSONParser();
            while (true){
                String res = null;
                try {
                    if (input.available() > 0){
                        JSONObject json = (JSONObject) parser.parse(input.readUTF());
                        System.out.println("Server response: "+ res);
                    }
                } catch (IOException e) {
                    e.printstacktrace();
                    System.exit(-1);
                }
            }
        }
    }

在客户端,我通过以下方式发送 JSON 文件

    public class SendThread implements Runnable{
        private DataOutputStream output;

        public SendThread(DataOutputStream output){
            this.output = output;
        }

        @Override
        public void run() {
            // create json string
            JSONObject json = new JSONObject();
            json.put("key1",1);
            json.put("key2","Helloworld");

            try {
                this.output.writeUTF(json.toString());
                this.output.flush();
            } catch (IOException e) {
                e.printstacktrace();
                System.exit(-1);
            }
        }
    }

提前致谢!感谢您提供任何帮助。

一哥

解决方法

原来是 JSON.simple 的版本问题。

在 v1.1 中,parse 方法采用 reader 参数,但在 1.1.1 版本中,parse 能够采用 String 参数。