2011-08-11 62 views
7

我上课是这样的:Java对象到JSON与org.json LIB

public class Class1 { 
    private String result; 
    private String ip; 
    private ArrayList<Class2> alarm; 
} 

如果报警了这样一类:

public class Class2 { 
    private String bla; 
    private String bla1; 
} 

有没有简单的方法到Class的实例转换带org.json的JSON对象?

回答

18

我认为利用org.json.lib的JSONObject(Object)构造函数是你正在寻找的。它将基于它的getter从你的Java Object构造一个JSONObject。然后,您可以使用JSONObject#toString来获取生成的实际Json。

JSONObject jsonObject = new JSONObject(instanceOfClass1); 
String myJson = jsonObject.toString(); 
+1

他的bean没有任何public accessor方法,因此JSONObject将无法获取他的属性。 –

+1

的确如此。我想这可能是一个可怜的假设,我只是为了简洁而忽略了它们。 – BuffaloBuffalo

+0

叶,谢谢) – Divers

4

虽然JSONObject是可走的路,你需要遵循什么样的JavaDoc中说,关于bean属性:

使用豆的getter对象构造一个JSONObject。它在对象的所有公共方法上反映了 。对于每个方法 没有参数,名称以“get”或“is”开头,后跟 大写字母,调用该方法,并将一个密钥和从getter方法返回的值 放入新JSONObject的。 键是通过删除“get”或“is”前缀形成的。如果第二个 剩余的字符不是大写,那么第一个字符是 转换为小写。例如,如果一个对象有一个名为 “getName”的方法,并且如果调用object.getName()的结果是“Larry Fine”,那么JSONObject将包含“name”:“Larry Fine”。

基于文档,它会在您的情况下失败,因为您不通过获取和设置器公开这些属性。