我有一个多维数组,它有整数和字符串值。我想以json格式转换数组并将其发送回ajax函数。我正在尝试打印数组内容以进行检查,但我无法这样做。
Os[] o1 = new os[];
o1[0].os_name = "xyz";
o1[0].os_id = 1;
JSONArray jsArray = new JSONArray(o1);
for (int i = 0; i < jsArray.length(); ++i) {
JSONObject rec = jsArray.getJSONObject(i);
int id = rec.getInt("os_id");
String loc = rec.getString("os_name");
System.out.println(id+loc);
}
我有一个os课程:
public class Os {
int os_id;
String os_name;
}
我收到错误:
找不到JSONObject [&#34; os_id&#34;]。
答案 0 :(得分:0)
首先,您需要初始化数组和正在使用的对象。 其次,您需要为评估者提供(gettters)以使Json API工作的Os对象属性
您的主要问题是您的bean中缺少getter。要解决此问题,请更改OS类:
public class Os {
int os_id;
String os_name;
public int getOs_id() {
return os_id;
}
public String getOs_name() {
return os_name;
}
}
然后您的更正代码将是:
// In Java the Arrays must have a size
Os[] o1 = new Os[1];
/* The Array contains only null values by default. You must create
objects and assign them to the newly created Array.
( In your example, only one object is created) */
Os anOs = new Os();
anOs.os_name = "xyz";
anOs.os_id = 1;
// Assign the object to the Array index 0
o1[0]=anOs;
JSONArray jsArray = new JSONArray(o1);
for (int i = 0; i < jsArray.length(); ++i) {
JSONObject rec = jsArray.getJSONObject(i);
int id = rec.getInt("os_id");
String loc = rec.getString("os_name");
System.out.println(id+loc);
}
答案 1 :(得分:0)
假设你打算这样做
Os[] osArray = new Os[1];
Os os1 = new Os();
os1.os_id = 1;
os1.os_name = "xyz";
osArray[0] = os1;
JSONArray jsonArray = new JSONArray(osArray);
我正在尝试打印数组内容
你可以这样做
System.out.println(jsonArray.toString());
这将在数组中打印一个空的JSON对象。
[{}]
因此,您的错误是有道理的,因为您有一个没有键的空对象。
要解决此问题,请更新您的课程
public class Os {
int os_id;
String os_name;
public int getOs_id() {
return os_id;
}
public String getOs_name() {
return os_name;
}
}
现在你会看到
[{"os_id":1,"os_name":"xyz"}]