gpt4 book ai didi

java - Spring Android Framework - 通过 HTTP GET 检索 JSON 数据

转载 作者:行者123 更新时间:2023-11-30 03:34:27 24 4
gpt4 key购买 nike

我正在使用 Spring 框架通过 Http GET 从本地服务器获取 JSON 数据到对象中。但是对象总是空的(没有存储数据)

  • 我已经仔细检查了服务器,它工作正常
  • 服务器返回 {"Propid":"61", "Proptitle":"3 bhk villa","Propdealer":"admin"}
  • 我已经添加了 Jackson 图书馆
  • 我使用了 StringHttpMessageConverter,它返回 JSON 字符串 {"Propid":"61", "Proptitle":"3 bhk villa","Propdealer":"admin"}

抛出异常:无法提取响应:找不到适合响应类型 [com.aditya.master.classes.Prop] 和内容类型 [text/html;charset=UTF-8] 的 HttpMessageConverter

这是解析 JSON 响应的代码

URI targetUrl= UriComponentsBuilder.fromUriString("http://192.168.1.9/PinSpace/oauth/")
.path("request_access/")
.queryParam("query", "get_property")
.queryParam("access_token", auth_code)
.queryParam("prop_id", "61")
.build()
.toUri();

HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.setAccept(Collections.singletonList(new MediaType("application", "json")));
HttpEntity<?> requestEntity = new HttpEntity<Object>(requestHeaders);


RestTemplate restTemplate = new RestTemplate();

restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());


ResponseEntity<Prop> responseEntity = restTemplate.exchange(targetUrl, HttpMethod.GET, requestEntity, Prop.class);
Prop result = responseEntity.getBody();

这是 Prop 类

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;

@JsonIgnoreProperties(ignoreUnknown = true)
public class Prop {

@JsonProperty
private String Propid, Proptitle, Propdealer;


public String getPropid() {
return Propid;
}

public void setPropid(String propid) {
Propid = propid;
}

public String getProptitle() {
return Proptitle;
}

public void setProptitle(String proptitle) {
Proptitle = proptitle;
}

public String getPropdealer() {
return Propdealer;
}

public void setPropdealer(String propdealer) {
Propdealer = propdealer;
}
}

请提出解决方案

谢谢!

最佳答案

您可以使用以下代码测试反序列化:

ObjectMapper objectMapper = new ObjectMapper();
String content = "{\"Propid\":\"61\", \"Proptitle\":\"3 bhk villa\",\"Propdealer\":\"admin\"}";
objectMapper.readValue(content , Prop.class);

这会引发异常

org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "Propid"

这意味着您的类中的字段命名不正确,或者您需要在@JsonProperty 注释中指向正确的名称

我建议你使用下一个结构:

public class Prop {

private String propid;
private String proptitle;
private String propdealer;

public String getPropid() {
return propid;
}

@JsonProperty("Propid")
public void setPropid(String propid) {
this.propid = propid;
}

public String getProptitle() {
return proptitle;
}

@JsonProperty("Proptitle")
public void setProptitle(String proptitle) {
this.proptitle = proptitle;
}

public String getPropdealer() {
return propdealer;
}

@JsonProperty("Propdealer")
public void setPropdealer(String propdealer) {
this.propdealer = propdealer;
}

}

关于java - Spring Android Framework - 通过 HTTP GET 检索 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16853935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com