如何在jsp中显示Json对象 [英] How to display Json object in jsp

查看:156
本文介绍了如何在jsp中显示Json对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是jsp的新手。我有一个 JSON 编码

  {eventDetails:[{的startDate :1387175589253, eventJSON :{\ userIp\:\ \ organizationUid\ *** *** *** ** \。:\ 4261-5404a609bd14\,\ userAgent\:\ 的Restlet-Framework\ / 2.1m3\,\ currentSessionToken\:\ 9f3ee5b076-27dbead458ca\,\\ \\ endTime\:1312,\ apiKey\:\ b6bd9-30849cf17727\,\ startTime\:13853,\ sessionToken\:空,\ eventId\ :\ 4731d1-adb6-10faaa3ee269\ \ userUid\:空,\ userId\:1,\ context\:\ \ / v2 \ / account \ / loginas\ / anonymous \,\eventName\:\user-loginAs\

我需要显示eventJSON对象作为原始数据: {\ userIp\:\ 204.236.177.80\,\ organizationUid\:\4261739e-CCAE-11e1的-ADFB-5404a609 bd14\,\ userAgent\:\ 的Restlet-Framework\ / 2.1m3\,\ currentSessionToken\:\ 9f3ee54a-4f5f-b076-27d8ca\, \ endTime\:1387175589312,\ apiKey\:\ b6b8-4ad5-96d9-3084927\,\ startTime\:1387175589253,\ sessionToken\:空,\ eventId\:\ 478e8-4ed1-adb6-10faaa3ee269\,\ userUid\:空,\ userId\:11878,\context\ :\\ / v2 \ / act \ / lonas \ / anonymous \,\eventName\:\user-loginAs\}

如何使用gson显示eventJSON并使用 c:out 进行打印。

JSP页面 = datalogList - $ {gC.index} >
< td id =eventName - $ {gC.index}>
< c:out value =$ {datalog.eventName}/>
< / td>
< td id =startTime - $ {gC.index}>
< c:out value =$ {datalog.startTime}/>
< / td>
< td id =endTime - $ {gC.index}>
< c:out value =$ {datalog.endTime}/>
< / td>
< td id =apiKey - $ {gC.index}>< / a>
< / td>
< / tr>

Java

  Datalogging [] logevents =(Datalogging [])gson.fromJson(eventValueList.toString(),Datalogging []。class); 

感谢您阅读。

解决方案


  1. 您可以像下面这样使用JavaScript变量:

    var persons = [
    {name:John Doe,address:Main Street 1},
    {name:Jane Doe,address:Baker Street 1},
    {name:Jack Doe,address:Church Street 1}
    ];



$ b $

 <!DOCTYPE html>>我建议使用jQuery创建一个HTML表格。 
< html lang =en>
< head>
< title>测试< /标题>
< script src =http://code.jquery.com/jquery-latest.min.js>< / script>
< script>
var persons = [
{name:John Doe,address:Main Street 1},
{name:Jane Doe,address :Baker Street 1},
{name:Jack Doe,address:Church Street 1}
];
$(document).ready(function(){
var table = $('< table />')。appendTo($('#somediv'));
$ (person).each(function(i,person){
$('< tr />')。appendTo(table)
.append($('< td />' ).text(person.name))
.append($('< td />').text(person.address));
});
});
< / script>
< / head>
< body>
< div id =somediv>< / div>
< / body>
< / html>

2。你可以像Java String这样的变量:

  String jsonPersons =[
+{\ name \:\John Doe \,\address \:\Main Street 1 \},
+{\name \: \\Jane Doe \,\address \:\Baker Street 1 \},
+{\name \:\Jack Doe \\ \\地址\\:\Church Street 1 \}
+];

然后我建议使用JSON解析器来获取List,例如Google Gson: / p>

 列表< Person> fromJson(jsonPersons,new TypeToken< List< Person>>(){} .getType()); 

其中Person类看起来像这样:

  public class Person {
private String name;
私有字符串地址;
//添加或生成getters / setters。
}

让servlet将它放入请求范围并转发到JSP以进行显示所以:

  request.setAttribute(persons,persons); 
request.getRequestDispatcher(/ WEB-INF / persons.jsp)。forward(request,response);

在JSP中,使用JSTL遍历它:

 <%@ taglib uri =http://java.sun.com/jsp/jstl/coreprefix =c%> 
...
< table>
< c:forEach items =$ {persons}var =person>
< tr>
< td> $ {person.name}< / td>
< td> $ {person.address}< / td>
< / tr>
< / c:forEach>
< / table>



<3>与2)相同,您将它作为Java变量,但您希望获得它由JSP中的Ajax实现。然后创建一个Servlet类,它在doGet()方法中执行以下操作:

  response.setCharacterEncoding(UTF-8); 
response.setContentType(application / json);
response.getWriter()。write(jsonPersons);

用jQuery Ajax调用它,它的回调函数与1)相同。

  $(document).ready(function(){
var table = $('< table />')。 appendTo($('#somediv'));
$ .getJSON('url / to / servlet',function(persons){
persons.each(function(i,person){
$('< tr />')。appendTo(table)
.append($('< td />').text(person.name))
.append $('< td />')。text(person.address));
});
});
});


I'm newbie to jsp. I have a JSON coding

{"eventDetails":[{"startDate":1387175589253,"eventJSON":"{\"userIp\":\"***.***.***.**\",\"organizationUid\":\"4261-5404a609bd14\",\"userAgent\":\"Restlet-Framework\/2.1m3\",\"currentSessionToken\":\"9f3ee5b076-27dbead458ca\",\"endTime\":1312,\"apiKey\":\"b6bd9-30849cf17727\",\"startTime\":13853,\"sessionToken\":null,\"eventId\":\"4731d1-adb6-10faaa3ee269\",\"userUid\":null,\"userId\":1,\"context\":\"\/v2\/account\/loginas\/anonymous\",\"eventName\":\"user-loginAs\""

I need to display eventJSON object as a raw data :

{\"userIp\":\"204.236.177.80\",\"organizationUid\":\"4261739e-ccae-11e1-adfb-5404a609bd14\",\"userAgent\":\"Restlet-Framework\/2.1m3\",\"currentSessionToken\":\"9f3ee54a-4f5f-b076-27d8ca\",\"endTime\":1387175589312,\"apiKey\":\"b6b8-4ad5-96d9-3084927\",\"startTime\":1387175589253,\"sessionToken\":null,\"eventId\":\"478e8-4ed1-adb6-10faaa3ee269\",\"userUid\":null,\"userId\":11878,\"context\":\"\/v2\/act\/lonas\/anonymous\",\"eventName\":\"user-loginAs\"}

how to display eventJSON using gson and printing with c:out.

JSP Page

<tr id="datalogList-${gC.index}">
<td id = "eventName-${gC.index}">
<c:out value="${datalog.eventName}" />
</td>   
<td id = "startTime-${gC.index}">
<c:out value="${datalog.startTime}" />
</td>  
<td id = "endTime-${gC.index}">
<c:out value="${datalog.endTime}" />
</td>
<td id = "apiKey-${gC.index}"></a>
<c:out value="${datalog.apiKey}" />
</td>
</tr> 

Java

  Datalogging[]  logevents = (Datalogging[]) gson.fromJson(eventValueList.toString(),Datalogging[].class);

Thanks for reading.

解决方案

  1. You have it as a JavaScript variable like so:

    var persons = [ { "name": "John Doe", "address": "Main Street 1" }, { "name": "Jane Doe", "address": "Baker Street 1" }, { "name": "Jack Doe", "address": "Church Street 1" } ];

I'd suggest to use jQuery to create a HTML table out of it.

<!DOCTYPE html>
    <html lang="en">
      <head>
        <title>Test</title>
        <script src="http://code.jquery.com/jquery-latest.min.js"></script>
        <script>
            var persons = [
                { "name": "John Doe", "address": "Main Street 1" },
                { "name": "Jane Doe", "address": "Baker Street 1" },
                { "name": "Jack Doe", "address": "Church Street 1" }
            ];
            $(document).ready(function() {
                var table = $('<table/>').appendTo($('#somediv'));
                $(persons).each(function(i, person) {
                    $('<tr/>').appendTo(table)
                        .append($('<td/>').text(person.name))
                        .append($('<td/>').text(person.address));
                });
            });
        </script>
      </head>
      <body>
        <div id="somediv"></div>
      </body>
    </html>

2. You have it as a Java String variable like so:

String jsonPersons = "["
    + "{ \"name\": \"John Doe\", \"address\": \"Main Street 1\" },"
    + "{ \"name\": \"Jane Doe\", \"address\": \"Baker Street 1\" },"
    + "{ \"name\": \"Jack Doe\", \"address\": \"Church Street 1\" }"
+ "]";

Then I suggest to use a JSON parser to get a List out of it, like Google Gson:

List<Person> persons = new Gson().fromJson(jsonPersons, new TypeToken<List<Person>>()       {}.getType());

Where the Person class look like this:

public class Person {
   private String name;
   private String address;
   // Add or generate getters/setters.
}

Let the servlet put it in the request scope and forward to JSP for display like so:

request.setAttribute("persons", persons); 
request.getRequestDispatcher("/WEB-INF/persons.jsp").forward(request, response);

In JSP, use JSTL to iterate over it:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
...
<table>
 <c:forEach items="${persons}" var="person">
    <tr>
        <td>${person.name}</td>
        <td>${person.address}</td>
    </tr>
 </c:forEach>
</table>

3 Same as 2), you have it as a Java variable, but you'd like to obtain it by Ajax in JSP. Then create a Servlet class which does the following in doGet() method:

response.setCharacterEncoding("UTF-8");
response.setContentType("application/json");
response.getWriter().write(jsonPersons);

And call it by jQuery Ajax with a callback which does the same as 1).

$(document).ready(function() {
  var table = $('<table/>').appendTo($('#somediv'));
  $.getJSON('url/to/servlet', function(persons) {
    persons.each(function(i, person) {
        $('<tr/>').appendTo(table)
            .append($('<td/>').text(person.name))
            .append($('<td/>').text(person.address));
    });
  });
});

这篇关于如何在jsp中显示Json对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆