Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么GSON将对象数组转换为字符串数组?_Javascript_Arrays_Json_Jakarta Ee_Gson - Fatal编程技术网

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

Javascript 为什么GSON将对象数组转换为字符串数组?,javascript,arrays,json,jakarta-ee,gson,Javascript,Arrays,Json,Jakarta Ee,Gson,我试图在JSP中显示对象列表。 由于GSON,该列表是从Java数组到Javascript数组的转换。 算法是: 加载servlet中对象的数组列表 使用GSON转换为JSON对象 将JSON对象转发到JSP 在Javascript数组中加载JSON对象 将Javascript数组显示为HTML 问题是,当我循环JS数组时,它无法将JS数组的元素识别为对象: 问题是当我循环JS数组并打印它的元素时,我得到了第一张图像的字符这意味着GSON不会将数组转换为对象,而是转换为字符串数组 如何确保G

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

  • 加载servlet中对象的数组列表
  • 使用GSON转换为JSON对象
  • 将JSON对象转发到JSP
  • 在Javascript数组中加载JSON对象
  • 将Javascript数组显示为HTML
  • 问题是,当我循环JS数组时,它无法将JS数组的元素识别为对象:

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

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

    我的班级“活动”:

    Servlet端:

    ArrayList<Activite> listActivite = new ArrayList<Activite>();
    // ... Fill array from database ...
    String jsonActivite = new Gson().toJson(listActivite);
    request.setAttribute( "listActivite", listActivite );
    requestDispatcher.include(request, response);
    
    ArrayList listActivite=new ArrayList();
    // ... 从数据库填充数组。。。
    字符串jsonActivite=new Gson().toJson(listActivite);
    setAttribute(“listActivite”,listActivite);
    requestDispatcher.include(请求、响应);
    
    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>
    
    
    var listActivite=;
    

    var p=document.getElementById(“演示”); document.getElementById(“demo”).innerHTML+=listActivite+“

    ”;


    对于(i=0;i问题注释中的用户所说的答案是不解析JSP中的请求属性

    var listActivite =  <%= request.getAttribute("jsonActivite")%>;
    
    var-listActivite=;
    
    listActivite现在是一个简单的JS对象数组


    谢谢你,Pointy。

    在我看来,你好像在两次转换为JSON——一次在Java代码中,一次在JSP中。@Pointy谢谢,是的,这是一个错误。我将其更正为fromJson()。但现在JSP无法识别fromJson()方法。为什么?在哪里?没有
    fromJson()
    在您发布的代码中。这应该不是必需的;您的JSON字符串是有效的JavaScript,因此无需进一步解析。@Pointy我将
    toJson()
    编辑为
    fromJson()
    在代码中。我不明白为什么它不起作用。谢谢@Pointy,我应该按照您所说的那样获取属性,而不需要进一步解析。
    var listActivite=;
    var listActivite =  <%= request.getAttribute("jsonActivite")%>;