微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

来自 Javalin 字符串的 JSON 响应

如何解决来自 Javalin 字符串的 JSON 响应

我正在尝试从 Javalin 中的字符串创建 JSON 格式的响应。 JSON 对象必须来自字符串,而不是来自类。

public static void main(String[] args) {

    Javalin app = Javalin.create().start(9000);

    String jsonString = "{'test1':'value1','test2':{'id':0,'name':'testName'}}";
    JsonObject jsonObject= JsonParser.parseString(jsonString).getAsJsonObject();
            
    app.error(404,ctx -> ctx.json(jsonObject));

    ...

}

使用上面的代码,我收到了 500 服务器错误

解决方法

如果您使用的是 Gson,则在使用 Javalin 方法(例如 ctx.json())时切换到使用 Jackson。

如果您使用Maven导入Javalin,并且如果您使用了javalin-bundle,那么您已经拥有Jackson,例如:

<dependency>
    <groupId>io.javalin</groupId>
    <artifactId>javalin-bundle</artifactId>
    <version>3.13.3</version>
</dependency>

如果您只使用了 javalin 而不是 javalin-bundle,那么您需要自己添加 Jackson - 例如:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.2</version>
</dependency>

以下是问题中的代码,但重新工作以使用 Jackson(并使用有效的 JSON):

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.javalin.Javalin;

public class App {

    public static void main(String[] args) throws JsonProcessingException {
        Javalin app = Javalin.create().start(9000);
        String jsonString = "{\"test1\":\"value1\",\"test2\":{\"id\":0,\"name\":\"testName\"}}";
        ObjectMapper objectMapper = new ObjectMapper();
        JsonNode jsonNode = objectMapper.readTree(jsonString);
        app.error(404,ctx -> ctx.json(jsonNode));
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。