Java中的JSON对象问题?

时间:2012-10-09 06:19:50

标签: java json

我有一个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());

2 个答案:

答案 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