如何在nanohttpd中将JSON数据作为响应发送

时间:2018-05-08 06:22:55

标签: java json get response 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);
}

1 个答案:

答案 0 :(得分:2)

我没有使用JSON对象,而是使用了"{\"id\":\"abcd\", \"message\",\"1234\"}"之类的JSON字符串,并且它有效。