尝试输出一些带引号的文本("),如下所示:
nextradio.onclick = () => { createRadio(dyndiv.id); };
输出:
public static String expectedFormatData(ItemRequested currentController) {
String result = "";
switch (currentController) {
case ROOM: result = "{\"roomName\" : roomName, \"squareFootage\" : squareFootage"; break;
case EQUIPMENT: result = "{\"equipmentName\" : roomName}"; break;
case CONTROL: result = "{\"controlName\" : roomName}"; break;
case VALUE: result = "{value}"; break;
default: break;
}
return result;
}
你可以看到char" \"存在于字符串中。如何在没有它的情况下在字符串中插入引号?
答案 0 :(得分:1)
两件事:
A)看起来你想要像输出格式一样创建JSON。然后:使用现有的库为您执行此操作;而不是重新发明轮子。
B)考虑不在这里使用枚举。我想你现在在许多地方都有这种类型的控制器类型切换。或许不是现在,但你可能很快就会拥有它们。这很简单:糟糕的OO设计!
您应该做什么:创建一个抽象类,并使每个控制器类型成为该类的特定子类。最后,您的代码只是执行类似
的操作String controllerAsString = whatEverInstanceOfController.formatData();
或类似的东西。
答案 1 :(得分:0)
这确实与Json,调试代码和: 在发送作为Json响应之前,响应包含字符串而没有引号前的丑陋反斜杠。当我使用Postman检查输出时会出现反斜杠。
letrec
调试:当字符串转换为JsonPrimitive时,看起来它会在引号之前添加反斜杠。 输出:
private class ApiErrorSerializer implements JsonSerializer<ApiError> {
@Override
public JsonElement serialize(ApiError src, Type typeOfSrc, JsonSerializationContext context) {
Gson gson = new Gson();
JsonObject result = new JsonObject();
Date date = new Date();
result.addProperty("timestamp", String.valueOf(new Timestamp(date.getTime())));
result.addProperty("status", String.valueOf(src.getStatus()));
if (src.getStatus() == 404) {
result.addProperty("error", "Not Found");
} else {
result.addProperty("error", "Bad Request");
}
result.addProperty("exception", typeOfSrc.getTypeName());
JsonPrimitive message = new JsonPrimitive(src.getMessage());
//result.addProperty("message", src.getMessage());
result.add("message", message);
result.addProperty("path", src.getPath());
return result;
}
}