2016-01-11 2 views
0

Общее обновление: Ранее я спросил, могу ли я получить значение JSONObject как есть, а затем сравнить его с перезаписанной версией. Моя первая попытка была:Назначить текущее значение объекта JSONObject другому 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 и не добавить его это значение. Мне было интересно, был ли такой метод, как valueOf() для JSON.
У меня уже есть ответы, которые помогли мне приблизиться к решению, но все же не решили. Для org.simple.json есть ли возможность получить oldObj с текущим значением obj, чтобы сравнить их позже и определить разницу?
Прямо сейчас я не могу заглянуть в класс org.simple.json.JSONObject сам, так как источник отсутствует.

В качестве ссылки: org.json.JSONObject может решить эту проблему с помощью этого конструктора:
public JSONObject(JSONObject jo, java.lang.String[] names). Но мне не нужны другие функции.

+3

Вы присваиваете значение 'obj'' oldObj' и печатаете оба, поэтому очевидно, что 'toJSONString' напечатает то же значение. – Mena

+1

Знаете ли вы разницу между объектами и ссылками в Java? – immibis

+0

Да, я знаю, что в настоящее время я назначаю 'oldObj'' obj'. Мне было интересно, есть ли опция, например 'valueof()' или что-то вроде этого. –

ответ

1
JSONObject oldObj = obj 

Я думаю, что это не делает, что вы думаете. Вы назначаете новую ссылку, а не создаете новый объект со значениями в obj.

Вы можете использовать конструктор, указанный здесь: http://www.json.org/javadoc/org/json/JSONObject.html#JSONObject%28org.json.JSONObject,%20java.lang.String[]%29, чтобы скопировать старые значения в новый объект, но вы должны указать все ключи, которые необходимо скопировать.

+0

В соответствии с doc 'public JSONObject (JSONObject jo, java.lang.String [] names)' должен выполнять задание, но я получаю эту ошибку 'Конструктор JSONObject (JSONObject, String []) не определен' –

+0

Что такое имя пакета для класса JSONObject, который вы используете? – blank

+0

'org.json.simple' Теперь я пытаюсь найти источник, чтобы узнать, существует ли этот конструктор. –

0

Попробуйте использовать Eclipse или NetBeans или другую опцию Debug IDE! У них есть вкладка переменных, и вы можете просмотреть каждое значение.

+0

Я не пытаюсь отладить его, я хочу получить разницу позже. –

+0

Его JSONObject, чтобы вы могли получить (String key) или get (Object key). Вы не можете просто valueOf(), потому что json может иметь много элементов. – amkz

Смежные вопросы