在字符串java中添加引号

时间:2016-08-21 15:29:56

标签: java json string double-quotes

尝试输出一些带引号的文本("),如下所示:

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" \"存在于字符串中。如何在没有它的情况下在字符串中插入引号?

2 个答案:

答案 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;
    }
}