下面是我目前在代码中使用的json:

{"forceDeviceLockout":0,"canStartValue":true,"destructOnRead":[30,60,300]}

我使用以下函数获取json值:
private Object getValueForField(Field field) {
        if (runtimeConfiguration.has(field.fieldName) && field.updateFromServer) {
            try {
                Object value = runtimeConfiguration.get(field.fieldName);
                if (value instanceof JSONArray) {
                    JSONArray values = (JSONArray) value;
                    if (values.get(0) instanceof Number) {
                        long[] retVals = new long[values.length()];
                        for (int i = 0; i < values.length(); i++) {
                            retVals[i] = ((Number) values.get(i)).longValue();
                        }
                        return retVals;
                    }
                } else if (value instanceof Number) {
                    return ((Number) value).longValue();
                } else {
                    return value;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return field.defaultValue;
    }

现在,我有了一个新的嵌套json,如下所示:
{“forcedevicelockout”:0,“canstartvalue”:true,“destructonread”:[30,60300],“newvalue”:{“canstartnewvalue1”:true,“canstartroupvalue”:true}
在新的json中,我添加了嵌套的json对象:newvalue,它本身有两个对象。
我在json方面有点弱,所以不确定如何修改代码来检索上述单独的值。有什么想法吗?

最佳答案

我不知道你为什么这么复杂!但看看我为你写的代码。它可能会给你一个想法:

public void printFieldsValues(Object object){
    try{
        Field[] fields = object.getClass().getFields();

        JSONObject jsonObject = new JSONObject();

        for(Field field : fields){
            jsonObject.put(field.getName(), field.get(object));
        }

        JSONObject newValue = new JSONObject("{\"canStartNewValue1\":true,"
                                             + "\"canStartroupValue\":true}");

        jsonObject.put("NEWVALUE", newValue);

        printJson(jsonObject);

    }catch(Exception e){
        e.printStackTrace();
    }
}

public void printJson(JSONObject jsonObject) throws JSONException{
    Iterator<String> keys = jsonObject.keys();
    String           key;
    while(keys.hasNext()){
        key = keys.next();
        try{
            printJson(new JSONObject(jsonObject.getString(key)));
        }catch(Exception e){
            Log.d("TAG", "key = " + key);
            Log.d("TAG", "value = " + jsonObject.get(key).toString());
        }
    }
}

在你的主对象中,你可以这样称呼它:
printFieldsValues(this);

07-24 09:47
查看更多