Как получить данные через JSON в определенном формате - PullRequest
1 голос
/ 11 мая 2011

Ниже приведен фрагмент кода, который используется для получения онлайн-списка из gtalk

                     if (status == true) {
         Roster roster =connection.getRoster(); 
         Collection<RosterEntry> entries =roster.getEntries(); 
         System.out.println(roster.getEntryCount()); 
         int count1 = 0; 
         int count2 = 0; 
         for(RosterEntry r:entries)
          { 
          Presence presence = roster.getPresence(r.getUser());
          if(presence.getType() == Presence.Type.unavailable)
          {
         // System.out.println(user + "is offline");
          count1++; 
          } 
          else
          { 
              String rosterNamesJson = new Gson().toJson(r.getName()); 
              String rosterUserJson =new Gson().toJson(r.getUser());
              response.setContentType("application/json");
              response.setCharacterEncoding("utf-8");
              //array of 2 elements
             String  rosterInfoJson=response.getWriter().write("rosterNamesJson"+"rosterUserJson"]);
              response.sendRedirect("Roster.jsp");
              //System.out.println(name+user + "is online"); 
              count2++;
    }
          }
}

Теперь на моей странице jsp я хочу заполнить список как имя и его jid, т.е. xoxoxo: xoxoxo@gmail.com jjj: jjj@gmail.com и так далее. Как мне этого добиться?

Должен ли я создать элемент Json, т.е.

users
 {
   name:
   jid:
  }

а затем написать функцию на моей странице JSP для доступа к данным?

У меня есть функция

     $(function() {
        $.getJSON('xxxServlet', function(rosterInfoJson) {
            var $ul = $('<ul>').appendTo($('#roster'));
            $.each(rosterInfoJson, function(index, rosterEntry) {
                $('<li>').text(rosterEntry.user).appendTo($ul);
            });
        });
    });

1 Ответ

2 голосов
/ 11 мая 2011

да.Вы должны построить свой JSON как

 users
  {
   name:
   jid:
  }

. Вы можете определить класс Java, отображающий JSON.

public class MyUser{
  public String name;
  public String jid;
  public MyUser(String name, String jid){
    this.name=name;
    this.jid=jid;
  }
}

А затем просто добавьте все онлайн-использования в список или что-то в этом роде.

ArrayList<MyUser> mul = new ArrayList<MyUser>();
if (status == true) {
 ...
 ...
 for(RosterEntry r:entries) { 
  if(...){
         ... 
  } 
  else
  { 
    mul.add(new MyUser(r.getName(),r.getUser());
    count2++; 
  }
 }

response.setContentType("application/json");
response.getWriter().write(new Gson().toJSON(mul));
response.setCharacterEncoding("utf-8");
response.sendRedirect("Roster.jsp");

В вашем JavaScript

...
$('<li>').text(rosterEntry.name +":"+rosterEntry.jid).appendTo($ul);
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...