- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经实现了这个例子 Retrieving JSON data via HTTP GET
Json 响应是这样的:
{"employees":[{"personName":"Albert","personSurname":"1stein","personNumber":"1","personMobile":"5555555","personId":"1234567890","personCompanyCode":"CC01"},
{"personName":"Albert","personSurname":"2stein","personNumber":"2","personMobile":"5555556","personId":"1234567891","personCompanyCode":"CC01"},
{"personName":"Albert","personSurname":"2stein","personNumber":"3","personMobile":"5555557","personId":"1234567892","personCompanyCode":"CC01"},
{"personName":"Albert","personSurname":"4stein","personNumber":"4","personMobile":"5555558","personId":"1234567893","personCompanyCode":"CC01"},
{"personName":"Albert","personSurname":"5stein","personNumber":"5","personMobile":"5555559","personId":"1234567894","personCompanyCode":"CC01"}],
"result":true,"message":"OK"}
我无法使用 StringHttpMessageConverter
,因为我的数据很大(200,000 名员工),它给我一个OutOfMemoryError。
我想像示例中那样直接从 json 检索此数据,但它给了我406 Not Acceptable 错误。
我的类.java :
public class MyClass { private String personName; private String
personSurname; .. ..
(Setters and Getters) .. ..
}
下面的方法我都试过了,没啥区别:
restTemplate.exchange(targetUrl, HttpMethod.GET, requestEntity, myClass.class)
或
restTemplate.exchange(targetUrl, HttpMethod.GET, requestEntity, myClass[].class)
从这个 json 中获取 myClass 对象的正确方法是什么?
最佳答案
您正在尝试直接获取子节点,而不是通过父节点。默认情况下,Rest Template 会尝试将响应 JSON 数据转换为指定的类,如果它不适合您的情况,则会抛出错误。
这里是员工类
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"personName",
"personSurname",
"personNumber",
"personMobile",
"personId",
"personCompanyCode"
})
public class Employee {
@JsonProperty("personName")
private String personName;
@JsonProperty("personSurname")
private String personSurname;
@JsonProperty("personNumber")
private String personNumber;
@JsonProperty("personMobile")
private String personMobile;
@JsonProperty("personId")
private String personId;
@JsonProperty("personCompanyCode")
private String personCompanyCode;
@JsonProperty("personName")
public String getPersonName() {
return personName;
}
@JsonProperty("personName")
public void setPersonName(String personName) {
this.personName = personName;
}
@JsonProperty("personSurname")
public String getPersonSurname() {
return personSurname;
}
@JsonProperty("personSurname")
public void setPersonSurname(String personSurname) {
this.personSurname = personSurname;
}
@JsonProperty("personNumber")
public String getPersonNumber() {
return personNumber;
}
@JsonProperty("personNumber")
public void setPersonNumber(String personNumber) {
this.personNumber = personNumber;
}
@JsonProperty("personMobile")
public String getPersonMobile() {
return personMobile;
}
@JsonProperty("personMobile")
public void setPersonMobile(String personMobile) {
this.personMobile = personMobile;
}
@JsonProperty("personId")
public String getPersonId() {
return personId;
}
@JsonProperty("personId")
public void setPersonId(String personId) {
this.personId = personId;
}
@JsonProperty("personCompanyCode")
public String getPersonCompanyCode() {
return personCompanyCode;
}
@JsonProperty("personCompanyCode")
public void setPersonCompanyCode(String personCompanyCode) {
this.personCompanyCode = personCompanyCode;
}
}
这是包含您的 JSON 响应的父类
import java.util.List;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"employees",
"result",
"message"
})
public class EmployeeDataResponse {
@JsonProperty("employees")
private List<Employee> employees = null;
@JsonProperty("result")
private Boolean result;
@JsonProperty("message")
private String message;
@JsonProperty("employees")
public List<Employee> getEmployees() {
return employees;
}
@JsonProperty("employees")
public void setEmployees(List<Employee> employees) {
this.employees = employees;
}
@JsonProperty("result")
public Boolean getResult() {
return result;
}
@JsonProperty("result")
public void setResult(Boolean result) {
this.result = result;
}
@JsonProperty("message")
public String getMessage() {
return message;
}
@JsonProperty("message")
public void setMessage(String message) {
this.message = message;
}
}
在这种情况下,您的休息电话应如下所示
EmployeeDataResponse employeeDataResponse = restTemplate.exchange(targetUrl, HttpMethod.GET, requestEntity, EmployeeDataResponse.class);
如果您需要对答案进行澄清,请告诉我。
关于Android Spring Rest 客户端 "exchange"创建类(406 Not Acceptable ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42253058/
在 HTTP 中,您可以在请求中指定您的客户端可以使用 accept header 接受响应中的特定内容,其值如 application/xml。内容类型规范允许您在内容类型中包含参数,例如chars
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 Improve th
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 3 年前。 Improve th
我的 RESTFul API 只能响应 JSON 编码的数据(即我所有的 header 都有 Content-Type: application/json)。如果请求具有不允许 JSON 的 Acce
我有 C linux TCP 客户端/服务器应用程序。我想出了一个奇怪的场景,但我不知道这个应用程序是否有任何后果。我有一个可以接受 N 个连接的服务器端,例如这个服务器将接受 100 个连接。在这种
我试图找出 的可能值范围接受 和 接受-联系 header 字段,但我在 RFC 中找不到完整列表。有谁知道他们在哪里?我经常看到 Accept: application/sdp;level=1,
在 TCP 套接字代码中,我们创建了 2 个套接字。第一个接受新连接,第二个接受来自客户端的数据并在新连接建立时创建。 TCP header 中的哪个控制位允许服务器知道将此段传递给 ServerSo
我可以设置 Request.Content-Type = ... , Request.Content-Length = ... 如何设置Accept和Accept-Language? 我想上传一个文件
假设A是服务器,B是客户端。 B 创建一个到服务器 A 的套接字 b 并 ServerSocket.accept() 创建一个相应的套接字 a 对于客户端 B 现在,如果服务器 A 关闭了 a 但客户
如果客户端connect()先于服务端accept()成功,那么客户端如何知道服务端accept()成功呢?如果在 connect() 成功和服务器 accept() 之间的时间间隔调用 send()
这是我的代码: void error(const char *msg) { perror(msg); exit(1); } void sServer::acceptClientConn
在我的 pom.xml 中有以下详细信息 org.codehaus.jackson jackson-core-asl 1.9.13
假设我有两个如下所示的端点: @GET @Path("/blah") @Produces(MIME_TYPE_1) public Thing getThing() { .... } @GET
我的 Controller : @RestController public class ClawerController { @RequestMapping("/hello"
我不想要可视化 merge 工具,我也不希望必须 vi 冲突文件并手动在 HEAD(我的)和导入的更改(他们的)之间进行选择。大多数时候,我要么想要他们的所有更改,要么想要我的所有更改。通常这是因为我
我正在使用 spring 4.1.1.RELEASE 并包括: pom 中的 jackson-core-asl 1.9.13 和 jackson-mapper-asl 1.9.13 来创建一个带有 R
我正在尝试开发自己的基于非阻塞 NIO 消息的通信库。我已经阅读了 1000 个关于它的教程和书籍章节,我认为最终我得到了一些可以在很少的同时连接下工作的东西。但是当我在服务器端共存许多连接时,我遇到
我正在尝试编写一个 Bind 元编程模板辅助元函数,将模板参数绑定(bind)到某物。 我有一个简单的模板元函数的工作实现: template struct MakePair { using
我使用 spring 构建 Restful API,当我访问以下方法时: // get the entity in DB by using id number @RequestMapping(
只是想知道是否有一种方法可以通过 ASP.NET Core 中的属性强制检查 HTTP header 值是否属于一组给定值(例如 application/json,应用程序/xml) 我知道有 Pro
我是一名优秀的程序员,十分优秀!