有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

带有自定义列表的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) 个答案