Java 将一个JSONObject的当前值分配给另一个JSONObject
常规更新:我之前问过是否可以按原样获取JSONObject的值,以便稍后将其与被覆盖版本进行比较。我的第一次尝试是:Java 将一个JSONObject的当前值分配给另一个JSONObject,java,json,compare,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
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
}
虽然我知道我只会通过将oldObj
赋值给obj
来引用obj
,而不会将其值相加。我想知道对于JSON是否有类似valueOf()
的方法我已经得到了帮助我更接近解决方案的答案,但没有解决它。对于
org.simple.json
是否有可能获得oldObj
的当前值obj
,以便稍后比较它们并确定差异?现在我自己无法查看类
org.simple.json.JSONObject
,因为缺少源代码。作为参考:
org.json.JSONObject
可以用这个构造函数解决它:公共JSONObject(JSONObject jo,java.lang.String[]名称)
。但不提供我需要的其他功能
JSONObject oldObj = obj
我想这和你想的不一样。您将为指定一个新的参照,而不是使用obj中的值创建一个新对象
您可以使用此处指定的构造函数:
要将旧值复制到新对象,但必须指定需要复制的所有键。尝试使用Eclipse或NetBeans或其他IDE调试选项!
它们有一个变量选项卡,您可以预览每个值。您正在将
obj
的值分配给oldObj
,并同时打印这两个值,因此显然toJSONString
将打印相同的值。您知道Java中对象和引用之间的区别吗?是的,我知道我目前只将oldObj
分配给obj
。我想知道是否有像valueof()
之类的选项。根据文档publicJSONObject(JSONObject jo,java.lang.String[]names)
应该做这项工作,但我得到了这个错误构造函数JSONObject(JSONObject,String[])是未定义的
您正在使用的JSONObject类的包名是什么?org.json.simple
我现在正试图查找源代码以查看此构造函数是否存在。它是一个完全不同的JSONObject github.com/fangyidong/json-simple。。这没有通过构造函数进行复制的方法。我不想调试它,我想在JSONObject之后获得差异,这样您就可以获取(字符串键)或(对象键)。您不能只使用valueOf(),因为json可以有许多元素。