问题描述
我正在编写一个服务器,它接收一个 JSON 字符串,然后使用 JSON.simple 包将其解析为 Java JSONObject
:https://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
参数。