在 Java 中制作静态最终 Json 对象
Making a static final Json object in Java
我目前正在构建一个 Java 定期执行任务的 Vertx 应用程序。
此应用程序执行特定逻辑,应该return Json 格式的值。
逻辑似乎可行,我在日志中获取所需值没有问题,但我无法return输入该值。
public void getNum(RoutingContext context){
Timer time = new Timer();
ScheduledTask st = new ScheduledTask();
time.schedule(st, 0, 500);
JsonObject jo = st.getJo();
if(!jo.toString().equals("{}")){
log.info("print json" + jo);
context.response().putHeader("content-type", "application/json").setStatusCode(200).end(jo.encodePrettily());
}
计划任务的代码如下所示。
public class ScheduledTask extends TimerTask {
JsonObject jo = new JsonObject();
public void run() {
try {
//logic
jo.put("file", split[0]);
jo.put("recogTime", split[1]);
jo.put("number", split[2]);
log.info(jo.encodePrettily());
}catch (Exception e){
e.printStackTrace();
log.info("Error.Running.1stCMD");
}
}
}
如果我删除 getNum 方法中的 if 语句,它似乎 return 一个空的 json,所以我猜测它是 return jo 的初始化值.
我有办法 return 想要的值吗?
提前致谢!!
给 jsonObject 设置一些值并尝试下面的代码,我不知道什么是 encodePrettily() 函数!
routingContext.response()
.putHeader("content-type", "application/json; charset=utf-8")
.end(Json.encodePrettily(jo.encodePrettily());
第一件事:
time.schedule(st, 0, 500); -> 这只会安排但会在未来某处执行。
JsonObject jo = st.getJo(); -> 从上次通话返回后立即执行 get()。到那时调度函数不会有 运行。
第二个:
如果您正在使用 Vert.x,请不要使用 java 计时器。您可以使用 Vertx 提供的函数
setPeriodic() -> To 运行 以预定的间隔一次又一次。
setTimer() -> 到 运行 按预定时间间隔一次。
我目前正在构建一个 Java 定期执行任务的 Vertx 应用程序。
此应用程序执行特定逻辑,应该return Json 格式的值。
逻辑似乎可行,我在日志中获取所需值没有问题,但我无法return输入该值。
public void getNum(RoutingContext context){
Timer time = new Timer();
ScheduledTask st = new ScheduledTask();
time.schedule(st, 0, 500);
JsonObject jo = st.getJo();
if(!jo.toString().equals("{}")){
log.info("print json" + jo);
context.response().putHeader("content-type", "application/json").setStatusCode(200).end(jo.encodePrettily());
}
计划任务的代码如下所示。
public class ScheduledTask extends TimerTask {
JsonObject jo = new JsonObject();
public void run() {
try {
//logic
jo.put("file", split[0]);
jo.put("recogTime", split[1]);
jo.put("number", split[2]);
log.info(jo.encodePrettily());
}catch (Exception e){
e.printStackTrace();
log.info("Error.Running.1stCMD");
}
}
}
如果我删除 getNum 方法中的 if 语句,它似乎 return 一个空的 json,所以我猜测它是 return jo 的初始化值.
我有办法 return 想要的值吗?
提前致谢!!
给 jsonObject 设置一些值并尝试下面的代码,我不知道什么是 encodePrettily() 函数!
routingContext.response()
.putHeader("content-type", "application/json; charset=utf-8")
.end(Json.encodePrettily(jo.encodePrettily());
第一件事:
time.schedule(st, 0, 500); -> 这只会安排但会在未来某处执行。
JsonObject jo = st.getJo(); -> 从上次通话返回后立即执行 get()。到那时调度函数不会有 运行。
第二个:
如果您正在使用 Vert.x,请不要使用 java 计时器。您可以使用 Vertx 提供的函数
setPeriodic() -> To 运行 以预定的间隔一次又一次。 setTimer() -> 到 运行 按预定时间间隔一次。