2013-06-12 144 views
0

我有一个返回给我的格式为JSON的字符串。该字符串如下所示将JSON字符串反序列化为自定义Java对象

{ "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); 

这是否理想情况下,我想类似的东西。

回答

1

Jackson能做到这一点:

final ObjectMapper mapper = new ObjectMapper(); 

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

因为你的字段名将会自动工作是相同的JSON!

如果你有比较复杂的情况,您可以使用标注,自定义解串器等

0

我会建议使用下一个库,

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

我已经用它,它是很容易。

0

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

GSON是可以用来将Java对象转换成JSON的表示形式的Java库。它也可以用来将JSON字符串转换为等效的Java对象。 Gson可以使用任意Java对象,包括您没有源代码的预先存在的对象。

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 
} 
相关问题