将JSONObject的当前值分配给另一个JSONObject

时间:2016-01-11 09:56:59

标签: java json compare

常规更新:之前我曾询问是否可以按原样获取JSONObject的值,以便稍后将其与覆盖版本进行比较。我的第一次尝试是:

JSONObject oldObj = new JSONObject();
public void addRootNode(String nodeid, int depth) {
    oldObj = obj;
    //Get value of obj as is
    addNodesToGraph(nodeid, depth);
    //Change value of obj
}

//later
public boolean compareJSON(){
    return oldObj.equals(obj);
    //should return false
}

Altough我知道我只会通过将obj分配给oldObj并且不添加它的值来引用obj。我想知道是否有类似{J}的valueOf()方法。
我已经得到了answears,这有助于我更接近解决方案,但却没有解决它。对于org.simple.json,是否有可能让oldObj具有当前值obj以便稍后对其进行比较并确定差异?
现在我不能自己查看班级org.simple.json.JSONObject,因为缺少来源。

作为参考:org.json.JSONObject可以使用此构造函数解决它:
public JSONObject(JSONObject jo, java.lang.String[] names)。但是没有提供我需要的其他功能。

2 个答案:

答案 0 :(得分:1)

JSONObject oldObj = obj

我认为这不符合您的想法。您正在分配新引用,而不是使用obj。

中的值创建新对象

您可以使用此处指定的构造函数: http://www.json.org/javadoc/org/json/JSONObject.html#JSONObject%28org.json.JSONObject,%20java.lang.String[]%29将旧值复制到新对象,但您必须指定需要复制的所有键。

答案 1 :(得分:0)

尝试使用Eclipse或NetBeans或其他IDE Debug选项! 它们有一个变量选项卡,您可以预览每个值。