我有一个JSON对象,它转换为String并保存到数据库中。但是当我试图将它取回时,它会抛出异常。我的对象是这样的......
{"COLUMN":["Type","Sub Type","F.P.","P.P.","Process","Due To Start"]}
我们如何以正常形式恢复数据?
我的Java代码是.....
JSONObject obj = new JSONObject();
JSONArray the_json_array = obj.getJSONArray(userReorderOption);
int size = the_json_array.size();
ArrayList<JSONObject> arrays = new ArrayList<JSONObject>();
for (int i = 0; i < size; i++) {
JSONObject another_json_object = the_json_array.getJSONObject(i);
arrays.add(another_json_object);
}
我得到了例外......
net.sf.json.JSONException: JSONObject["{\"TASKLIST_COLUMN_REORDER\":[\"Type\",\"Sub Type\",\"F.P.\",\"P.P.\",\"Process\",\"Due To Start\"]}"] is not a JSONArray.
这是java Code如何创建JSON对象并保存到数据库中......
String userReorderSelection;
Set set = new LinkedHashSet(userReorderSelection);
JSONObject json = new JSONObject();
json.accumulate("COLUMN", set);
saveJSONObj("PrimaryKeyColumn", json.toString());
答案 0 :(得分:2)
感谢Tichodroma,
但正如我告诉我正在使用net.sf.json.JSONObject
类及以上的东西,我们也可以从这个类中实现。我为解决上述问题做了什么?...请看一下Java代码......
JSONObject jsonObj = new JSONObject();
JSONObject obj = jsonObj.fromObject(userReorderOption);
JSONArray columnName = (JSONArray) obj.get("COLUMN");
for (int i = 0; i < columnName.size(); i++) {
System.out.println(columnName.getString(i));
}
这个代码适用于我的Json Jar **(net.sf.json)**
答案 1 :(得分:1)
您的JSON不是JSONArray
。
JSONArray是一个有序的值序列。
您有JSONObject
。
JSONObject是名称/值对的无序集合。
修改强>
使用org.codehaus.jettison.json
中的JSON实现,您可以执行以下操作:
String json = "{\"COLUMN\":[\"Type\",\"Sub Type\",\"F.P.\",\"P.P.\",\"Process\",\"Due To Start\"]}";
JSONObject obj = new JSONObject(json);
JSONArray column = (JSONArray) obj.get("COLUMN");
for (int i = 0; i < column.length(); i++) {
final String field = column.getString(i);
System.out.println(field);
}
结果:
Type
Sub Type
F.P.
P.P.
Process
Due To Start