{
"name": "John Smith",
"status": true,
"requestMessage": "{\"id\": \"some-id\", \"timestamp\": \"2019-11-30\"}"
}
为了满足这个字段,我在POJO类中创建了一个属性RequestMessage
,并将该类型设置为JSONObject
,这是org.json
包中的一个类型。我认为这是有意义的,因为如果我需要在代码中使用它,我可以很容易地以JSONObject
的形式访问信息。我的POJO课上有这样的内容:
public class Message {
private String name;
private boolean status;
private JSONObject requestMessage;
@JsonCreator
public Message(
@JsonProperty("name") String name,
@JsonProperty("status") boolean status,
@JsonProperty("requestMessage") JSONObject requestMessage
) {
this.name = name;
this.status = status;
this.requestMessage = requestMessage;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
public JSONObject getRequestMessage() {
return requestMessage;
}
public void setRequestMessage(JSONObject requestMessage) {
this.requestMessage = requestMessage;
}
@Override
public String toString() {
return "Message{" +
"name='" + name + '\'' +
", status=" + status +
", requestMessage=" + requestMessage +
'}';
}
}
然而,杰克逊在发送消息时似乎无法正确地将其转换为字符串。RequestMessage
字段始终转换为字符串,作为有效负载中的空{}
对象。
如何让Jackson在发送有效负载时将message
POJO类中的requestmessage
属性正确转换为字符串并映射为字符串?
您需要告诉Jackson使用其ToString
方法序列化JSONObject
字段,如下所示:
public static class Message {
private String name;
private boolean status;
@JsonSerialize(using=ToStringSerializer.class)
private JSONObject requestMessage;
// ...
}
反序列化之所以有效,是因为Jackson默认使用接受字符串
参数的构造函数进行反序列化。JSONObject
有一个,所以它被反序列化了。为了保持一致性,我本来希望在序列化中使用tostring
,但实际上没有。我想这背后一定有很好的设计原因。
话虽如此,但我不明白,如果您已经在使用Jackson了,为什么还要尝试使用jsonObject
中的jsonObject
。我将坚持使用JSONObject
在Jackson中的等价物,我猜它是JSONNode
,Coderino Javarino建议的。
我正在使用将Json从Web获取到字符串中。 这可能很简单,但我似乎无法将此字符串转换为。 我该怎么做?
日安, 我在Adapter IBM Mobilefirst平台中创建了一个java类,它将从Jax-ws服务获得响应。 2.这段代码将获得XML字符串形式的响应,但我不知道如何使用库com.ibm.json.*。我想将字符串响应转换为JSONObject。 2.1.XML Soap信封中的结果响应(我得到的成功结果示例)。 2.2.responseSoap字符串变量我需要将字符串XML Soap响
问题内容: 请建议如何将使用库转换为使用库。 我未成功执行的操作: 问题答案: 您无需使用。您应该使用Gson在JSON字符串和您自己的Java对象之间进行转换。 请参阅《Gson用户指南》: (序列化) (反序列化)
我想将字节转换为JsonObject。我试着这样: 但我遇到编译器错误: 我怎么能这样呢?
问题内容: 我正在使用A 将Json从Web转换为字符串。 这可能很简单,但是我似乎无法将此字符串转换为。 我怎样才能做到这一点? 问题答案: 请参阅文档和示例。
问题内容: 基本上我有: 现在,我想将其转换为包含相同信息的。这样我就可以绕过对象,然后在需要时可以从对象中获取所有信息。任何帮助,将不胜感激,谢谢。 问题答案: 通常,Json对象将包含您的值(包括数组)作为其中的命名字段。因此,类似: 在JSON中将是{“ arrayName”:[…]}。