如何在 nanohttpd 中发送 JSON 数据作为响应
How to send JSON data as response in nanohttpd
我在我的项目中使用 nanohttpd
服务器。 GET
请求应发送 JSON 文件作为响应,但 nanohttpd
只允许 String
。我该怎么做?
这是 GET 方法:
class GetHandler{
JSONObject response;
JSONObject doGet(Queue queue){
Map.Entry<String, Message> entry = (Map.Entry<String, Message>)queue.getQueue().entrySet().iterator().next();
String key = entry.getKey();
String value = entry.getValue().getText();
int reCount = entry.getValue().increaseCount();
queue.getQueue().remove(key);
Date date = new Date();
long time = date.getTime();
queue.getInFlightQueue().put(key,new Message(value, reCount, time));
System.out.println("ID : " + key + " Message Body : " + value);
response.put("ID",key);
response.put("Message Body", value);
return response;
}
}
这是处理部分:
if (uriComponents[1].equals("queue") && mainHashMap.containsKey(uriComponents[2])) {
if (mainHashMap.get(uriComponents[2]).getQueue().isEmpty()) {
response = "Error : trying to access an empty queue";
return newFixedLengthResponse(NanoHTTPD.Response.Status.NOT_FOUND, "text/plain", response);
} else {
JSONObject message = implementGet.doGet(mainHashMap.get(uriComponents[2]));
return newFixedLengthResponse(NanoHTTPD.Response.Status.OK, "text/plain", message.toJSONString());
}
} else {
response = "Error : Given queue name doesn't exits. Usage:- GET/queue/<queue_name>";
return newFixedLengthResponse(NanoHTTPD.Response.Status.NOT_FOUND, "text/plain", response);
}
我没有使用 JSON 对象,而是使用了 JSON 字符串,类似于 "{\"id\":\"abcd\", \"message\",\"1234\"}"
并且它起作用了。
我在我的项目中使用 nanohttpd
服务器。 GET
请求应发送 JSON 文件作为响应,但 nanohttpd
只允许 String
。我该怎么做?
这是 GET 方法:
class GetHandler{
JSONObject response;
JSONObject doGet(Queue queue){
Map.Entry<String, Message> entry = (Map.Entry<String, Message>)queue.getQueue().entrySet().iterator().next();
String key = entry.getKey();
String value = entry.getValue().getText();
int reCount = entry.getValue().increaseCount();
queue.getQueue().remove(key);
Date date = new Date();
long time = date.getTime();
queue.getInFlightQueue().put(key,new Message(value, reCount, time));
System.out.println("ID : " + key + " Message Body : " + value);
response.put("ID",key);
response.put("Message Body", value);
return response;
}
}
这是处理部分:
if (uriComponents[1].equals("queue") && mainHashMap.containsKey(uriComponents[2])) {
if (mainHashMap.get(uriComponents[2]).getQueue().isEmpty()) {
response = "Error : trying to access an empty queue";
return newFixedLengthResponse(NanoHTTPD.Response.Status.NOT_FOUND, "text/plain", response);
} else {
JSONObject message = implementGet.doGet(mainHashMap.get(uriComponents[2]));
return newFixedLengthResponse(NanoHTTPD.Response.Status.OK, "text/plain", message.toJSONString());
}
} else {
response = "Error : Given queue name doesn't exits. Usage:- GET/queue/<queue_name>";
return newFixedLengthResponse(NanoHTTPD.Response.Status.NOT_FOUND, "text/plain", response);
}
我没有使用 JSON 对象,而是使用了 JSON 字符串,类似于 "{\"id\":\"abcd\", \"message\",\"1234\"}"
并且它起作用了。