使用org.json库将Java对象转换为JSON

15

我有这样一个类:

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

Alarm是一个类,长下面这样:

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

使用org.json有没有简单的方法将Class1的实例转换为JSON对象?

2个回答

32

我认为使用 org.json.lib 的 JSONObject(Object) 构造函数是你要找的。它将根据对象的getter方法构造一个 JSONObject,然后你可以使用 JSONObject#toString 来获取实际生成的 Json。

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

1
他的bean没有任何公共访问方法,因此JSONObject将无法获得其属性。 - Mike Thomsen
1
没错。我猜可能是我的错误假设,认为它们只是为了简洁而被省略了。 - BuffaloBuffalo
@BuffaloBuffalo,你的链接404了。 - james.garriss

7
虽然 JSONObject 是最好的选择,但你需要遵循其 JavaDoc 中有关 bean 属性的说明:
使用 bean getter 从对象中构造一个 JSONObject。它反射对象的所有公共方法。对于没有参数且名称以 "get" 或 "is" 开头并后跟大写字母的每个方法,将调用该方法,并将来自 getter 方法的键和值放入新的 JSONObject。该键通过删除 "get" 或 "is" 前缀形成。如果第二个剩余字符不是大写字母,则将第一个字符转换为小写字母。例如,如果一个对象有一个名为 "getName" 的方法,并且调用 object.getName() 的结果是 "Larry Fine",那么 JSONObject 将包含 "name": "Larry Fine"。
根据文档,它无法在你的情况下成功,因为你没有通过 getter 和 setter 公开这些属性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接