为什么GSON会将对象数组转换为字符串数组?

时间:2015-04-23 14:52:16

标签: javascript arrays json java-ee gson

我正在尝试在JSP中显示对象列表。 该列表是GSON从Java数组到Javascript数组的转换。 算法是:

  1. 在servlet中加载对象的数组列表
  2. 使用GSON转换为JSON对象
  3. 将JSON对象转发到JSP
  4. 在Javascript数组中加载JSON对象
  5. 将Javascript数组显示为HTML
  6. enter image description here

    问题是当我循环JS数组时,它不能将JS数组的元素识别为对象:

    enter image description here

    问题是当我循环JS数组并打印其元素时,我得到了第一张图像的字符! 这意味着GSON不会将数组转换为对象,而是转换为字符串数组

    如何确保GSON实际上将JAVA对象数组转换为JS对象数组?

    我的班级“Activite”:

    public class Activite {
       private int id;
       private String description;
    }
    

    Servlet Side:

    ArrayList<Activite> listActivite = new ArrayList<Activite>();
    // ... Fill array from database ...
    String jsonActivite = new Gson().toJson(listActivite);
    request.setAttribute( "listActivite", listActivite );
    requestDispatcher.include(request, response);
    

    JSP方面:

    <!-- Load Array List -->
    <script> 
    var listActivite =  <%= new Gson().fromJson((String)request.getAttribute("jsonActivite"))%>;
    </script>
    
    <p id="demo"><p>
    
    <!-- Print the Array List's objects in the paragraph <p> -->
    <script>
    var p = document.getElementById("demo");
    document.getElementById("demo").innerHTML+=listActivite+"</br></br>";
    for(i=0; i<listActivite.length; i++){
        p.innerHTML += 'ID:'+listActivite[i].id+' DESC:'+listActivite[i].description+'</br>';
    }  
    </script>
    

1 个答案:

答案 0 :(得分:2)

问题的评论中用户Pointy的答案是,不解析JSP中的请求属性。

var listActivite =  <%= request.getAttribute("jsonActivite")%>;

listActivite现在是一个普通的JS对象数组。

谢谢Pointy。