উ - ব্যাখ্যা
আপনি জ্যাকসন লাইব্রেরিগুলি JOON স্ট্রিংকে POJO ( সমতল পুরাতন জাভা অবজেক্ট ) উদাহরণগুলিতে আবদ্ধ করার জন্য ব্যবহার করতে পারেন । POJO কেবলমাত্র একটি ব্যক্তিগত ক্লাস যা কেবলমাত্র ব্যক্তিগত ক্ষেত্র এবং পাবলিক গেটার / সেটার পদ্ধতিগুলি। জ্যাকসন পদ্ধতিগুলি প্রতিবিম্বিত করতে যাচ্ছেন ( প্রতিবিম্ব ব্যবহার করে) ), এবং শ্রেণীর ক্ষেত্রের নামগুলি JSON অবজেক্টের ক্ষেত্রের নামের সাথে খাপ খায় এমনভাবে JSON অবজেক্টটিকে POJO দৃষ্টিতে মানচিত্র করে চলেছে।
আপনার JSON অবজেক্টে, যা আসলে একটি যৌগিক বস্তু, মূল অবজেক্টে দুটি দুটি সাব-অবজেক্ট থাকে। সুতরাং, আমাদের POJO ক্লাসগুলির একই শ্রেণিবিন্যাস হওয়া উচিত। আমি পুরো JSON অবজেক্টকে পৃষ্ঠা অবজেক্ট হিসাবে কল করব । পেজ অবজেক্টে একটি পেজআইএনফো অবজেক্ট এবং একটি পোস্ট থাকে অবজেক্ট অ্যারে থাকে।
সুতরাং আমরা তিনটি পৃথক POJO ক্লাস তৈরি করতে হবে;
- পৃষ্ঠা ক্লাস, একটি যৌগিক PageInfo শ্রেণী এবং অ্যারে পোস্ট দৃষ্টান্ত
- পেজআইএনফো ক্লাস
- পোস্ট ক্লাস
আমি কেবল প্যাকেজ ব্যবহার করেছি জ্যাকসন অবজেক্টম্যাপার, আমরা যা করি তা হ'ল ডেটা বাঁধাই;
com.fasterxml.jackson.databind.ObjectMapper
প্রয়োজনীয় নির্ভরতা, জার ফাইলগুলি নীচে তালিকাভুক্ত করা হয়েছে;
- জ্যাকসন-কোর-2.5.1.jar
- জ্যাকসন-databind-2.5.1.jar
- জ্যাকসন-টীকা-2.5.0.jar
এখানে প্রয়োজনীয় কোডটি রয়েছে;
বি - মূল পোজো ক্লাস: পৃষ্ঠা
package com.levo.jsonex.model;
public class Page {
private PageInfo pageInfo;
private Post[] posts;
public PageInfo getPageInfo() {
return pageInfo;
}
public void setPageInfo(PageInfo pageInfo) {
this.pageInfo = pageInfo;
}
public Post[] getPosts() {
return posts;
}
public void setPosts(Post[] posts) {
this.posts = posts;
}
}
সি - শিশু পোজো ক্লাস: পেজআইএনফো
package com.levo.jsonex.model;
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;
}
}
ডি - চাইল্ড পোজো ক্লাস: পোস্ট
package com.levo.jsonex.model;
public class Post {
private String post_id;
private String actor_id;
private String picOfPersonWhoPosted;
private String nameOfPersonWhoPosted;
private String message;
private int likesCount;
private String[] comments;
private int timeOfPost;
public String getPost_id() {
return post_id;
}
public void setPost_id(String post_id) {
this.post_id = post_id;
}
public String getActor_id() {
return actor_id;
}
public void setActor_id(String actor_id) {
this.actor_id = actor_id;
}
public String getPicOfPersonWhoPosted() {
return picOfPersonWhoPosted;
}
public void setPicOfPersonWhoPosted(String picOfPersonWhoPosted) {
this.picOfPersonWhoPosted = picOfPersonWhoPosted;
}
public String getNameOfPersonWhoPosted() {
return nameOfPersonWhoPosted;
}
public void setNameOfPersonWhoPosted(String nameOfPersonWhoPosted) {
this.nameOfPersonWhoPosted = nameOfPersonWhoPosted;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public int getLikesCount() {
return likesCount;
}
public void setLikesCount(int likesCount) {
this.likesCount = likesCount;
}
public String[] getComments() {
return comments;
}
public void setComments(String[] comments) {
this.comments = comments;
}
public int getTimeOfPost() {
return timeOfPost;
}
public void setTimeOfPost(int timeOfPost) {
this.timeOfPost = timeOfPost;
}
}
ই - নমুনা JSON ফাইল: নমুনা JSONFile.json
আমি এই ফাইলটিতে আপনার জেএসএন নমুনাটি অনুলিপি করেছি এবং এটি প্রকল্প ফোল্ডারের নীচে রেখেছি।
{
"pageInfo": {
"pageName": "abc",
"pagePic": "http://example.com/content.jpg"
},
"posts": [
{
"post_id": "123456789012_123456789012",
"actor_id": "1234567890",
"picOfPersonWhoPosted": "http://example.com/photo.jpg",
"nameOfPersonWhoPosted": "Jane Doe",
"message": "Sounds cool. Can't wait to see it!",
"likesCount": "2",
"comments": [],
"timeOfPost": "1234567890"
}
]
}
এফ - ডেমো কোড
package com.levo.jsonex;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.levo.jsonex.model.Page;
import com.levo.jsonex.model.PageInfo;
import com.levo.jsonex.model.Post;
public class JSONDemo {
public static void main(String[] args) {
ObjectMapper objectMapper = new ObjectMapper();
try {
Page page = objectMapper.readValue(new File("sampleJSONFile.json"), Page.class);
printParsedObject(page);
} catch (IOException e) {
e.printStackTrace();
}
}
private static void printParsedObject(Page page) {
printPageInfo(page.getPageInfo());
System.out.println();
printPosts(page.getPosts());
}
private static void printPageInfo(PageInfo pageInfo) {
System.out.println("Page Info;");
System.out.println("**********");
System.out.println("\tPage Name : " + pageInfo.getPageName());
System.out.println("\tPage Pic : " + pageInfo.getPagePic());
}
private static void printPosts(Post[] posts) {
System.out.println("Page Posts;");
System.out.println("**********");
for(Post post : posts) {
printPost(post);
}
}
private static void printPost(Post post) {
System.out.println("\tPost Id : " + post.getPost_id());
System.out.println("\tActor Id : " + post.getActor_id());
System.out.println("\tPic Of Person Who Posted : " + post.getPicOfPersonWhoPosted());
System.out.println("\tName Of Person Who Posted : " + post.getNameOfPersonWhoPosted());
System.out.println("\tMessage : " + post.getMessage());
System.out.println("\tLikes Count : " + post.getLikesCount());
System.out.println("\tComments : " + Arrays.toString(post.getComments()));
System.out.println("\tTime Of Post : " + post.getTimeOfPost());
}
}
জি - ডেমো আউটপুট
Page Info;
****(*****
Page Name : abc
Page Pic : http://example.com/content.jpg
Page Posts;
**********
Post Id : 123456789012_123456789012
Actor Id : 1234567890
Pic Of Person Who Posted : http://example.com/photo.jpg
Name Of Person Who Posted : Jane Doe
Message : Sounds cool. Can't wait to see it!
Likes Count : 2
Comments : []
Time Of Post : 1234567890