I am writing a server which receives a JSON string then parse it to Java JSONObject
, by using the JSON.simple package: https://mkyong.com/java/json-simple-example-read-and-write-json/.
I am using DataInputStream to read input, but when I try to parse the input by writing:
JSONObject json = (JSONObject) parser.parse(input.readUTF());
it says that parse(Java.io.Reader) can not be applied to (Java.lang.String)
. SO how do I convert the input.readUTF()
into the required reader
format?
For reference, my code for receiving and parsing the JSON input:
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);
}
}
}
}
At the client side, I send the JSON file by:
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);
}
}
}
Thanks in advance! Any bits of help is appreciated.
Yige