JSON 来自 Javalin 中字符串的响应
JSON response from string in Javalin
我正在尝试从 Javalin 中的字符串创建 JSON 格式的响应。 JSON 对象必须来自字符串,而不是来自 class.
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 方法时切换到使用 Jackson,例如 ctx.json()
。
如果您使用 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));
}
}
我正在尝试从 Javalin 中的字符串创建 JSON 格式的响应。 JSON 对象必须来自字符串,而不是来自 class.
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 方法时切换到使用 Jackson,例如 ctx.json()
。
如果您使用 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));
}
}