Java 重写Json对象中的值

Java 重写Json对象中的值,java,json,Java,Json,我正在尝试生成键值对JSON格式,但它被覆盖了,有人能帮我吗 节目 我得到的输出 如果这是一个愚蠢的问题,请不要阻止我尝试将JSONObject初始化从while循环的外部移动到它的内部。如下图所示 while(l.hasNext() && l2.hasNext()){ JSONObject jobj = new JSONObject(); jobj.put("Des",l.next()); jobj.put("Amount",l2.next()); json.a

我正在尝试生成键值对JSON格式,但它被覆盖了,有人能帮我吗

节目 我得到的输出
如果这是一个愚蠢的问题,请不要阻止我尝试将JSONObject初始化从while循环的外部移动到它的内部。如下图所示

while(l.hasNext() && l2.hasNext()){
  JSONObject jobj = new JSONObject();
  jobj.put("Des",l.next());
  jobj.put("Amount",l2.next());
  json.add(jobj);//trying to add json to combine two object into single object
  System.out.println("Datas of jsons"+json);//values are overriding
}

尝试将JSONObject初始化从while循环的外部移动到它的内部。如下图所示

while(l.hasNext() && l2.hasNext()){
  JSONObject jobj = new JSONObject();
  jobj.put("Des",l.next());
  jobj.put("Amount",l2.next());
  json.add(jobj);//trying to add json to combine two object into single object
  System.out.println("Datas of jsons"+json);//values are overriding
}

Put
JSONObject jobj=new JSONObject()进入while-loop。由于您在循环外部声明了JSONObject,您的JSONObject将被重写。只要在while循环中实例化jsonobject'jobj'就可以了进入while-loop。由于您在循环外部声明了JSONObject,您的JSONObject将被重写。只要在while循环中实例化jsonobject'jobj'就可以了。谢谢兄弟,但是我知道幕后发生了什么?当我在while循环中声明jsonobject时会发生什么?。它会在堆内存中创建另一个引用吗?是的,你是对的。当在循环内声明JSONobject时,会为每个循环迭代创建一个新的引用。谢谢兄弟,但是我的“我知道幕后发生了什么?”,当我在while循环内声明JSONobject时会发生什么?。它会在堆内存中创建另一个引用吗?是的,你是对的。当在循环内声明JSONobject时,将为每个循环迭代创建一个新引用
[
 {"Des":"Mani","Amount":846}, 
 {"Des":"Mani","Amount":846}, 
 {"Des":"Mani","Amount":846}, 
 {"Des":"Mani","Amount":846}, 
 {"Des":"Mani","Amount":846}, 
 {"Des":"Mani","Amount":846}
]
while(l.hasNext() && l2.hasNext()){
  JSONObject jobj = new JSONObject();
  jobj.put("Des",l.next());
  jobj.put("Amount",l2.next());
  json.add(jobj);//trying to add json to combine two object into single object
  System.out.println("Datas of jsons"+json);//values are overriding
}