arrays - 无法反序列化 start_array 令牌
问题描述
这是我的 POST 测试方法
public void createParagraph3() {
RestAssured.baseURI = paragraphsURL;
Map<String, Object> map = new HashMap<String, Object>();
map.put("featurePackage", Arrays.asList(new HashMap<String, String>() {{
put("name", "Test");
put("inputText", "test test");
}}));
map.put("features", Arrays.asList(new HashMap<String, Object>() {{
put("featureType", "Feature");
put("inUse", "true");
put("name", "test xyxy");
}}));
map.put("type", Arrays.asList(new HashMap<String, String>() {{
put("key", "int");
put("name", "Introduction");
}}));
RequestSpecification request = RestAssured.given();
request.header("Content-Type", "application/json");
request.body(map).toString();
Response response = request.post();
int statusCode = response.getStatusCode();
System.out.println("Response body: " + response.body().asString());
System.out.println("Status code received: " + statusCode);
}
下面我有我的要求,我正在创建我的测试
{
"featurePackage": {
"features": [
{
"featureType": "string",
"id": 0,
"inUse": true,
"name": "string"
}
],
"id": 0,
"name": "string",
"objectCount": 0
},
"features": [
{
"featureType": "string",
"id": 0,
"inUse": true,
"name": "string"
}
],
"id": 0,
"inputText": "string",
"objectCount": 0,
"outputHtmlText": "string",
"sourceFileName": "string",
"type": {
"key": "string",
"name": "string"
}
}
我做错了什么?我仍然收到 400 响应“无法反序列化实例”。有人可以帮忙吗?我的方法中有不完整的请求?
解决方案
编辑1:
根本原因是它map.toString()
不是一个有效的 JSON 字符串。
您有两种方法可以解决此问题:
PS:一个关于的demomap.toString()
Map<String, Integer> map = new HashMap<>();
map.put("apple", 1);
map.put("banana", 2);
System.out.println(map.toString());
// get: {apple=1, banana=2} is NOT a valid JSON String
// but, {"apple":1,"banana":2} is a valid JSON String
编辑2:
由于问题的所有者添加了一些评论,我必须添加以下答案。
Pom.xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.10.0</version>
</dependency>
Java代码:
// your comment
Map<String, Object> titles = new HashMap<>();
titles.put("titles", Arrays.asList(new HashMap<String, Object>() {
{
put("id", "876");
put("title", "test");
}
}));
System.out.println(titles);
// my new answer
import com.fasterxml.jackson.databind.ObjectMapper;
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(titles);
System.out.println(json);
推荐阅读
- angular - Angular Firestore 映射文档到对象
- javascript - 词边界 RegEx JS
- java - 启动 H2 db 服务器时 DER 长度超过 4 个字节
- wordpress - Wordpress 分页第二个分页页面用正确的 URL 变为空白
- angular - Angular Customer 指令,用于更改悬停时链接的颜色
- javascript - 使用 addeventlistener 运行 jquery 代码的问题
- vb.net - 创建 aspx 文件时如何停止 Visual Studio 2019 默认为 VB?
- node.js - 未捕获的 ReferenceError:事件模块中未定义要求
- flutter - 是否有任何教程或如何使用 dart:html 服务人员?
- recaptcha - 如何获取密钥重新验证码