带有自定义列表的java Json操作警告
我正在努力向全班反映一个json
。但是当我在对象的JsonArray
内部有JsonArray
时,我遇到了问题。似乎正在尝试查找类似List<Step>
的类,但找不到
我的输出是:
W/System.err: Value ... at steps of type org.json.JSONArray cannot be converted to JSONObject
我的课是这样的:
class Step {
private Consecutive consecutive;
private List<List<Steps>> steps = null;
}
我的Json的一部分:
{"step":{"consecutive":{"enabled":true,"period":"day"},"steps":[[{"points":100},{"points":200},{"points":300},{"points":400}],[{"points":100},{"points":200},{"points":300},{"points":400}],[{"points":100},{"points":200},{"points":300},{"points":400}],[{"points":100},{"points":200},{"points":300},{"points":400}],[{"points":100},{"points":200},{"points":300},{"points":400}],[{"points":100},{"points":200},{"points":300},{"points":400}],[{"points":100},{"points":200},{"points":300},{"points":400}]]}}
我的Json解析器:
public static Object populateObjectFromJSON(Class<?> classname, JSONObject js) {
Object obj = null;
System.out.println("Populating " + classname.getSimpleName() + " -with- " + js.toString());
try {
obj = classname.newInstance();
} catch (InstantiationException e1) {
System.err.println(e1.getMessage());
return null;
} catch (IllegalAccessException e1) {
System.err.println(e1.getMessage());
return null;
}
Field[] fields;
if (privacy == 0) {
fields = classname.getFields();
} else {
fields = classname.getDeclaredFields();
}
for (Field f : fields) {
// System.out.println("Declared " + f.getName());
if ((privacy == 2) && (Modifier.isPrivate(f.getModifiers()))) {
f.setAccessible(true);
}
try {
if (js.has(f.getName())) {
String type = f.getType().getSimpleName();
if (type.equalsIgnoreCase("boolean")) {
f.setBoolean(obj, js.getBoolean(f.getName()));
} else if (type.equalsIgnoreCase("int")) {
f.setInt(obj, js.getInt(f.getName()));
} else if (type.equalsIgnoreCase("double")) {
f.setDouble(obj, js.getDouble(f.getName()));
} else if (type.equalsIgnoreCase("float")) {
f.setFloat(obj, (float) js.getDouble(f.getName()));
} else if (type.equalsIgnoreCase("string")) {
f.set(obj, js.getString(f.getName()));
} else if (f.getType().isArray()) {
f.set(obj, Array.newInstance(f.getType().getComponentType(), js.getJSONArray(f.getName()).length()));
insertArrayFromJSON(f.get(obj), js.getJSONArray(f.getName()));
}else{
f.set(obj, populateObjectFromJSON(f.getType(), js.getJSONObject(f.getName())));
}
}
} catch (IllegalArgumentException e) {
System.err.println(e.getMessage());
} catch (IllegalAccessException e) {
System.err.println(e.getMessage());
} catch (JSONException e) {
System.err.println(e.getMessage());
}
if ((privacy == 2) && (Modifier.isPrivate(f.getModifiers()))) {
f.setAccessible(false);
}
}
return obj;
}
谢谢
共 (0) 个答案