循环中的 JSONObject 名称
JSONObject name in a loop
我有一个清单。我想要尽可能多的 JSONObjects。列表中的项目。因为我必须将它们全部添加到 JSONArray 中,所以我想为它们取一个不同的名称。
我使用的方法
JSONArray ja;
for(int i=0,i<myList.size();i++){
JSONObject jo=new JSONObject();
jo.put("data",myList.get(i));
ja.add(jo);
}
但这不起作用,我只得到最后一项,我需要不同的 JSONObject 名称。我怎样才能做到这一点?
您可以轻松地将 HashMap
转换为 JSONObject
。
JSONArray jsonArray=new JSONArray();
Map<String, String> params = new HashMap<>();
params.put("email", "your_email");
params.put("name", "your_name");
JSONObject jobj=new JSONObject(params)
jsonArray.put(jobj);
或尝试
JSONArray ja;
for(int i=0,i<myList.size();i++){
JSONObject jo=new JSONObject();
jo.put(String.valueOf(i),myList.get(i));
ja.add(jo);
}
您的问题是您创建了
JSONObject jo=new JSONObject();
在 for 循环中。这就是为什么你只有最后一个值。
将您的代码更改为如下所示:
JSONArray ja;
JSONObject jo=new JSONObject();
for(int i=0,i<myList.size();i++){
jo.put(String.valueOf(i),myList.get(i));
ja.add(jo);
}
我在下面添加了将数据添加到 json 数组并检索它的方法..
public void addJSONArray() {
try {
String KEY_A = "a";
String KEY_B = "b";
ArrayList<TempVO> tempVOs = new ArrayList<>();
// adding data to list
for (int i = 0; i < 10; i++) {
TempVO tempVO = new TempVO();
tempVO.setA(i);
tempVO.setB(i);
tempVOs.add(tempVO);
}
JSONArray jsonArray = new JSONArray();
for (int i = 0; i < tempVOs.size(); i++) {
JSONObject jsonObject = new JSONObject();
TempVO tempVO = tempVOs.get(i);
jsonObject.put(KEY_A, tempVO.getA());
jsonObject.put(KEY_B, tempVO.getB());
jsonArray.put(i, jsonObject);
}
// retrieving json data
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
System.out.println(jsonObject);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
如何调用此方法:
addJSONArray();
方法中使用的VO:
TempVO class :
public class TempVO {
private int a;
private int b;
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
}
谢谢..!!
感谢您的支持。
我解决了我的问题。问题是我在向数组添加对象时没有添加位置。
我在做
ja.add(jo);
我改成了
ja.add(i,jo);
然后就成功了..
但是非常感谢在 Hashmaps 上清除我的问题。到目前为止,我一直在哈希图中苦苦挣扎..
非常感谢。
我有一个清单。我想要尽可能多的 JSONObjects。列表中的项目。因为我必须将它们全部添加到 JSONArray 中,所以我想为它们取一个不同的名称。 我使用的方法
JSONArray ja;
for(int i=0,i<myList.size();i++){
JSONObject jo=new JSONObject();
jo.put("data",myList.get(i));
ja.add(jo);
}
但这不起作用,我只得到最后一项,我需要不同的 JSONObject 名称。我怎样才能做到这一点?
您可以轻松地将 HashMap
转换为 JSONObject
。
JSONArray jsonArray=new JSONArray();
Map<String, String> params = new HashMap<>();
params.put("email", "your_email");
params.put("name", "your_name");
JSONObject jobj=new JSONObject(params)
jsonArray.put(jobj);
或尝试
JSONArray ja;
for(int i=0,i<myList.size();i++){
JSONObject jo=new JSONObject();
jo.put(String.valueOf(i),myList.get(i));
ja.add(jo);
}
您的问题是您创建了
JSONObject jo=new JSONObject();
在 for 循环中。这就是为什么你只有最后一个值。
将您的代码更改为如下所示:
JSONArray ja;
JSONObject jo=new JSONObject();
for(int i=0,i<myList.size();i++){
jo.put(String.valueOf(i),myList.get(i));
ja.add(jo);
}
我在下面添加了将数据添加到 json 数组并检索它的方法..
public void addJSONArray() {
try {
String KEY_A = "a";
String KEY_B = "b";
ArrayList<TempVO> tempVOs = new ArrayList<>();
// adding data to list
for (int i = 0; i < 10; i++) {
TempVO tempVO = new TempVO();
tempVO.setA(i);
tempVO.setB(i);
tempVOs.add(tempVO);
}
JSONArray jsonArray = new JSONArray();
for (int i = 0; i < tempVOs.size(); i++) {
JSONObject jsonObject = new JSONObject();
TempVO tempVO = tempVOs.get(i);
jsonObject.put(KEY_A, tempVO.getA());
jsonObject.put(KEY_B, tempVO.getB());
jsonArray.put(i, jsonObject);
}
// retrieving json data
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
System.out.println(jsonObject);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
如何调用此方法:
addJSONArray();
方法中使用的VO:
TempVO class :
public class TempVO {
private int a;
private int b;
public int getA() {
return a;
}
public void setA(int a) {
this.a = a;
}
public int getB() {
return b;
}
public void setB(int b) {
this.b = b;
}
}
谢谢..!!
感谢您的支持。 我解决了我的问题。问题是我在向数组添加对象时没有添加位置。
我在做
ja.add(jo);
我改成了
ja.add(i,jo);
然后就成功了.. 但是非常感谢在 Hashmaps 上清除我的问题。到目前为止,我一直在哈希图中苦苦挣扎.. 非常感谢。