【发布时间】:2017-02-15 15:07:41
【问题描述】:
我已经实现了这个例子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 不可接受的错误。
myClass.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 对象的正确方法是什么?
【问题讨论】:
-
您的班级名称是
myClass还是MyClass? @serhat -
网络服务器响应的
Content-Type是什么?是application/json吗?你为requestEntity设置了什么标题?是否包含requestHeaders.setAccept(Collections.singletonList(new MediaType("application","json")));之类的内容? -
您的 JSON 结果不仅仅包含
MyClass元素的数组。MyClass元素的数组只能由employees字段访问。因此,您必须创建另一个包含private MyClass[] employees;之类的类,并将该类设置为exchange方法的第四个参数。 -
@Coder Android Studio 将不允许 myClass.所以错误不可能出现在那个时候。
-
@gus27 我已经为应用程序 json 添加了 setAccept。你的第二个帖子是我认为的原因。我将应用 Coder 的答案并回复该帖子。提前致谢。
标签: android json parsing resttemplate