首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javalin中字符串的JSON响应

Javalin中字符串的JSON响应
EN

Stack Overflow用户
提问于 2021-03-21 03:21:18
回答 1查看 241关注 0票数 1

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

代码语言:javascript
复制
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服务器错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-21 04:03:53

如果你使用的是Gson,那么当你使用ctx.json()这样的Javalin方法时,就切换到使用Jackson。

如果你使用Maven来导入have,如果你使用的是javalin-bundle,那么你已经有了Jackson,例如:

代码语言:javascript
复制
<dependency>
    <groupId>io.javalin</groupId>
    <artifactId>javalin-bundle</artifactId>
    <version>3.13.3</version>
</dependency>

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

代码语言:javascript
复制
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.2</version>
</dependency>

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

代码语言:javascript
复制
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));
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66725573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档