我试图使用Spring引导以特定格式发送带有json数据的post请求。我没有得到预期格式的数据。请帮我解决。提前谢谢。
class UserService{
public void sendRequest(User data){
HttpHeaders header = new HttpHeaders();
mapHeaders.set("Content-Type","application/json");
Map<String,User> m= new HashMap<String,User>();
m.put("request",data);
//print m i.e. payload being sent
HttpEntity entity = new HttpEntity<Object>(m, header);
String url = some url here
ResponseEntity<Object> response = restTemplate.exchange(url, httpMethod, entity,
Object.class);
}
}
class User{
private String firstName;
private String lastName;
}
打印有效载荷时,有效载荷显示为:
{request=User(firstName=Raj,lastName=Kumar)}
我想要的数据
{request={firstName=Raj,lastName=Kumar}}
您可以使用JSONObject:
Map<String, JSONObject> m = new HashMap<>();
m.put("request", new JSONObject(data));
结果:
{request={"firstName":"Raj","lastName":"Kumar"}}
Maven依赖项:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20210307</version>
</dependency>
如果需要以JSON格式打印对象,请使用Jackson库执行以下操作:
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
...
m.put("request", data);
ObjectMapper objectMapper = new ObjectMapper();
try {
String jsonString = objectMapper.writeValueAsString(m);
System.out.println(jsonString);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
...