用于创建JSON结构的逻辑解决方案

时间:2012-02-08 18:44:33

标签: java javascript jquery json java-ee

我不确定是否可能,但我认为可以使用JSONArray.put方法完成。
继承人我的问题:

我有两个清单:

ArrayList<Students> nativeStudents;
ArrayList<transferStudents> transferStudents = nativeStudents.getTransferStudentsList();

我使用transferStudents列表生成的JSON就在这里:http://jsfiddle.net/QLh77/2/使用以下代码:

  public static JSONObject getMyJSONObject( List<?> list )
    {
        JSONObject json = new JSONObject();
        JsonConfig config = new JsonConfig();
        config.addIgnoreFieldAnnotation( MyAppJsonIgnore.class );

        if( list.size() > 0 )
        {
            JSONArray array = JSONArray.fromObject( list, config );

            json.put( "students", array );
        }
        else
        {
            //Empty Array
            JSONArray array = new JSONArray();
            json.put( "students",
                      array );
        }

        return json;
    }

现在我想得到的是具有以下结构的JSON数据:http://jsfiddle.net/bsa3k/1/(注意两个数组元素中的 tempRollNumber 字段)。
我正在考虑这样做:(这里的if条件用于业务逻辑)

if(transferStudents.getNewStudentDetails().getRollNumber() == nativeStudents.getNativeStudentDetails.getStudentId()){

     json.put("tempRollNumber", transferStudents.getNewStudentDetails().getRollNumber());

}

但是这会将tempRollNumber添加到数组元素的外部,我希望这个JSON元素成为学生数组的每个条目的一部分。

PS:我无法编辑transferStudents类以添加tempRollNumber字段。

1 个答案:

答案 0 :(得分:1)

由于没有人能提出更好的建议,我会将上述评论转化为答案。

处理此问题的最佳方法是创建数据的对象模型,而不是自己创建JSON输出。您的应用服务器或容器可以为您处理。

虽然您无法更改List中收到的对象,但您可以扩展对象的类以添加自己的字段。当你编组时,这些字段会显示在JSON中。