我知道包JsonObject
中的org.json
可以创建一个JsonObject
一个构造函数,其参数是一个对象,但是我在Eclipse中找不到它。
添加了org.json
依赖项之后,下面是它的显示方式。
答案 0 :(得分:1)
之所以看不到该构造函数,是因为您使用的JSONObject
类来自android-json
包。您可以在Android JSONObject doc中看到相同的构造函数。
要获得您期望的JSONObject
,您需要添加org.json
的依赖项,如下所示(Maven或Gradle)
Maven依赖
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
等级依赖性
compile group: 'org.json', name: 'json', version: '20180813'
然后导入这个 JSONObject
类,您将看到您真正想要的构造函数。
答案 1 :(得分:0)
您可以使用以下方法将Java bean对象转换为JSON对象。我添加了一些数据类型,还使用了通用格式将其添加到json对象中。您可以自定义愿望。您只想将对象引用传递给此方法。
private JSONObject beanToJSON(Object bean) {
JSONObject json = new JSONObject();
try {
Field[] fields = bean.getClass().getDeclaredFields();
System.out.println(fields.length);
for (Field f : fields) {
String field = f.getName();
Class params[] = {};
Object paramsObj[] = {};
Method method = bean.getClass().getDeclaredMethod("get" + StringUtils.capitalise(field), params);
Object v = method.invoke(bean, paramsObj);
Class t = f.getType();
if (t == boolean.class && Boolean.FALSE.equals(v)) {
json.accumulate(field, v.toString());
} else if (t.isPrimitive() && ((Number) v).doubleValue() == 0) {
json.accumulate(field, v.toString());
} else if (t.isPrimitive() && ((Number) v).intValue() == 0) {
json.accumulate(field, v.toString());
} else if (t == String.class) {
json.accumulate(field, v.toString());
}
}
} catch (Exception e) {
e.printStackTrace();
}
return json;
}