Sunday, October 28, 2018

How to parse JSON in Java - Marshalling to Java Objects

Often times there will be a need to marshal JSON data to Java objects to store them in a data source. I have explained the concept using simple Java programs - I have used GSON library to do this and this will be pretty much same using any other libraries.

import com.google.gson.Gson;

public class JavaJsonSerializer {
 
 public static void main(String[] args) {
  /*
   * {
   "pageInfo": {
    "pageName": "TheTestbook",
    "pagePic": "content.jpg"
   },
   "posts": [{
    "postId": "123456",
    "postName": "Java Post"
  
   }]
  }
   */
  String jsonString = "{ \"pageInfo\": {  \"pageName\": \"TheTestbook\", 
         \"pagePic\": \"content.jpg\" },"
    + " \"posts\": [{  \"postId\": \"123456\",  
                \"postName\": \"Java Post\" }]}";
  
  Gson gson = new Gson();
  BlogPost blogPost = gson.fromJson(jsonString, BlogPost.class);
  System.out.println(blogPost);
 }

}


To support this Main program - you have to create 3 more Java classes

public class BlogPost {
 
 private PageInfo pageInfo;
 
 private List posts;

 public PageInfo getPageInfo() {
  return pageInfo;
 }

 public void setPageInfo(PageInfo pageInfo) {
  this.pageInfo = pageInfo;
 }

 public List getPosts() {
  return posts;
 }

 public void setPosts(List posts) {
  this.posts = posts;
 }

 @Override
 public String toString() {
  StringBuilder builder = new StringBuilder();
  builder.append("BlogPost [pageInfo=");
  builder.append(pageInfo);
  builder.append(", posts=");
  builder.append(posts);
  builder.append("]");
  return builder.toString();
 }

 

}

public class PageInfo {
 
 private String pageName;
 private String pagePic;
 public String getPageName() {
  return pageName;
 }
 public void setPageName(String pageName) {
  this.pageName = pageName;
 }
 public String getPagePic() {
  return pagePic;
 }
 public void setPagePic(String pagePic) {
  this.pagePic = pagePic;
 }
 @Override
 public String toString() {
  StringBuilder builder = new StringBuilder();
  builder.append("PageInfo [pageName=");
  builder.append(pageName);
  builder.append(", pagePic=");
  builder.append(pagePic);
  builder.append("]");
  return builder.toString();
 }

}

public class Post {
 
 private String postId;
 private String postName;
 public String getPostId() {
  return postId;
 }
 public void setPostId(String postId) {
  this.postId = postId;
 }
 public String getPostName() {
  return postName;
 }
 public void setPostName(String postName) {
  this.postName = postName;
 }
 @Override
 public String toString() {
  StringBuilder builder = new StringBuilder();
  builder.append("Post [postId=");
  builder.append(postId);
  builder.append(", postName=");
  builder.append(postName);
  builder.append("]");
  return builder.toString();
 }
 

}

Output:
BlogPost [pageInfo=PageInfo [pageName=TheTestbook, pagePic=content.jpg], posts=[Post [postId=123456, postName=Java Post]]]

No comments:

Post a Comment