0

我有一个返回给我的字符串,格式为 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);

理想情况下,我想要类似的东西。

4

4 回答 4

2

杰克逊可以做到这一点:

final ObjectMapper mapper = new ObjectMapper();

final AmazonSNSMessage message 
    = mapper.readValue(yourInput, AmazonSNSMessage.class);

它会自动工作,因为您的字段名称与 JSON 相同!

如果你有更复杂的场景,你可以使用注解、自定义反序列化器等。

于 2013-06-12T13:14:25.613 回答
0

我建议使用下一个库,

https://code.google.com/p/json-simple/

我已经使用它了,而且非常简单。

于 2013-06-12T13:15:22.880 回答
0

http://code.google.com/p/google-gson/

Gson 是一个 Java 库,可用于将 Java 对象转换为其 JSON 表示形式。它还可用于将 JSON 字符串转换为等效的 Java 对象。Gson 可以处理任意 Java 对象,包括您没有源代码的预先存在的对象。

于 2013-06-12T13:19:21.080 回答
0

一种注释方式,正如fge所说,Jackson 是一个非常强大的库,可以处理 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
}
于 2013-06-12T15:26:51.093 回答