我有一个返回给我的字符串格式化为JSON。该字符串如下所示
{ "Type" : "Notification". "MessageId" : "9343.....". "TopicArn" : "arn-....." "......" }
我创建了一个自定义对象,我想将此字符串解析为
public class AmazonSNSMessage
{
private String Type;
private String Notification;
private String MessageId;
private String TopicArn;
private String Subject;
private String Message;
private String Timestamp;
private String SignatureVersion;
private String Signature;
private String UnsubscribeURL
// And all the appropriate get/set methods
}
Java中是否有JSON反序列化器可以获取字符串并创建AmazonSNSMessage的实例?
C#通过调用此行
来做到这一点AmazonSNSMessage b = JsonConvert.DeserializeObject<AmazonSNSMessage>(TheString);
理想情况下我想要类似的东西。
答案 0 :(得分:1)
Jackson可以做到这一点:
final ObjectMapper mapper = new ObjectMapper();
final AmazonSNSMessage message
= mapper.readValue(yourInput, AmazonSNSMessage.class);
它将自动运行,因为您的字段名称与JSON相同!
如果您有更复杂的场景,可以使用注释,自定义反序列化器等。
答案 1 :(得分:0)
我建议使用下一个库,
https://code.google.com/p/json-simple/
我已经习惯了,而且很容易。
答案 2 :(得分:0)
http://code.google.com/p/google-gson/
Gson是一个Java库,可用于将Java对象转换为JSON表示。它还可用于将JSON字符串转换为等效的Java对象。 Gson可以处理任意Java对象,包括你没有源代码的预先存在的对象。
答案 3 :(得分:0)
评论模式,正如 fge 所说,杰克逊是一个非常强大的库来处理Json序列化和反序列化。它非常好的映射json键到POJO属性,以使用注释获得一致的驼峰代码。
public class AmazonSNSMessage
{
@JsonProperty("Type");
private String type;
@JsonProperty("Notification");
private String notification;
@JsonProperty("MessageId");
private String messageId;
@JsonProperty("TopicArn");
private String topicArn;
@JsonProperty("Subject");
private String subject;
@JsonProperty("Message");
private String message;
@JsonProperty("Timestamp");
private Date timestamp;
@JsonProperty("SignatureVersion");
private String signatureVersion;
@JsonProperty("Signature");
private String signature;
@JsonProperty("UnsuscribeUrl");
private String unsubscribeURL
// And all the appropriate get/set methods
}