[英]postman unable to parse JSON Object
我正在使用 dropwizard 框架,我正在嘗試通過 postman 請求訪問PUT
,但我得到:
{
"code": 400,
"message": "Unable to process JSON"
}
POSTMAN 請求的正文是:
[{"v1":".abc",
"v2": false,
"v3": 2,
"v4": ["Other"]}]
我的資源文件如下:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
@Path(value = "/v1/")
public class SomeClass {
private static final Logger LOGGER = LoggerFactory.getLogger(SomeClass.class);
@PUT
@Path(value = "/path/{value}")
@Produces(MediaType.APPLICATION_JSON)
public Response addCandidates(@PathParam(value = "value") String value, OtherClass otherclass) {
LOGGER.info("Request recieved"); // this line is not getting executed
return Response.status(Response.Status.OK).entity(null).build();
}
}
Class 定義:
import lombok.Data;
import java.util.List;
@Data
public class OtherClass {
private List<Something> something;
}
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
@JsonIgnoreProperties(ignoreUnknown=true)
public class Something extends abc {
}
表架構:
import java.util.Set;
@Data
public class abc implements Comparable<abc> {
@PrimaryKey
@JSONField(name = "v1")
public String v1;
@JSONField(name = "v2")
public boolean v2;
@JSONField(name = "v3")
public Integer v3;
@JSONField(name = "v4")
public Set<String> v4;
}
當我轉到 POSTMAN 的調試控制台時,它會顯示正確的填充值。 我不確定v4
是否導致問題
您的 json 不正確,您正在嘗試將 object 的數組解析為不是數組的 object OtherClass
。 所以你的 json 應該是:
{
"something": [
{
"v1": ".abc",
"v2": false,
"v3": 2,
"v4": [
"Other"
]
}
]
}
您還在混合注釋 - @JSONField
來自 FastJson 庫,但@JsonIgnoreProperties
來自 Jackson,因此請確保使用相同的序列化程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.