How to use gson that converts a hashmap into JsonObject

Bobby.lock :

I'm trying to create a JsonObject using gson on a hash map. What i want is that the json display be like this, {id="2",username="bob",lastname="billy",favTeam="Leeds",age="15"}. But when im trying to use gson.Json() it gives me a null exception error at String js = gson.toJson(obj). I'm not sure why it does that. Does anyone know why? I've seen some posts that have the same code as me but mine gives me an error.

  SEVERE: Servlet.service() for servlet [ProfileServlet] in context with path [/Project]  threw exception
java.lang.NullPointerException
at ntrut.ProfileServlet.doGet(ProfileServlet.java:73)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:688)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1639)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:834)

my code

  public class ProfileServlet extends HttpServlet 
 {
 protected HashMap<String, Profile> team = new HashMap<String, Profile>();

private static final long serialVersionUID = 1L;
private Gson gson = null;

public ProfileServlet() 
{

    Profile profile1 = new Profile("1","bob","bee","Manc city","21");
    Profile profile2 = new Profile("2","billy","smith","Dortmud","25");
    Profile profile3 = new Profile("3","john","jamesd","Aston Villa","44");

    String id = "1";
    String id2 = "2";
    String id3 = "3";

    team.put(id,profile1);
    team.put(id2,profile2); 
    team.put(id3,profile3);
}

public void sendAsJson(HttpServletResponse response, Object obj) throws IOException
{
    response.setContentType("application/json; charset=UTF-8");

    String js = gson.toJson(obj);

    PrintWriter out = response.getWriter(); 

    out.print(js);
    out.flush();

}


protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
{
    PrintWriter out = response.getWriter();
    String path = request.getPathInfo();
    out.print(path);
    String js = null;


    if(path == null || path.equals("/"))
    {

        response.setContentType("application/json; charset=UTF-8");
        sendAsJson(response,team);

    }

}

}

Profile class

public class Profile 
{
String id;
String username;
String lastname;
String favTeam;
String age;



public Profile() {
    super();
    // TODO Auto-generated constructor stub
}
public Profile(String id, String username, String lastname, String favTeam, String age) {
    super();
    this.id = id;
    this.username = username;
    this.lastname = lastname;
    this.favTeam = favTeam;
    this.age = age;
}
public String getId() {
    return id;
}
public void setId(String id) {
    this.id = id;
}
public String getUsername() {
    return username;
}
public void setUsername(String username) {
    this.username = username;
}
public String getLastname() {
    return lastname;
}
public void setLastname(String lastname) {
    this.lastname = lastname;
}
public String getFavTeam() {
    return favTeam;
}
public void setFavTeam(String favTeam) {
    this.favTeam = favTeam;
}
public String getAge() {
    return age;
}
public void setAge(String age) {
    this.age = age;
}



}
Lilith Schneider :

Seems like you're never initializing the gson object.

From here it seems all you have to do is private Gson gson = new Gson();

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=31814&siteId=1