A - स्पष्टीकरण
आप JSON स्ट्रिंग को POJO ( प्लेन ओल्ड जावा ऑब्जेक्ट ) इंस्टेंस में बाँधने के लिए जैक्सन लाइब्रेरीज़ का उपयोग कर सकते हैं । POJO केवल निजी क्षेत्रों और सार्वजनिक getter / सेटर विधियों के साथ एक वर्ग है। जैक्सन तरीकों ( प्रतिबिंब का उपयोग करके ) को पार करने जा रहा है , और जेएसएन ऑब्जेक्ट को पीओजेओ उदाहरण में मैप करता है, क्योंकि क्लास का फील्ड नाम जेएसएन ऑब्जेक्ट के फील्ड नामों पर फिट बैठता है।
आपकी JSON ऑब्जेक्ट में, जो वास्तव में एक संयुक्त ऑब्जेक्ट है, मुख्य ऑब्जेक्ट में ओ दो उप-ऑब्जेक्ट हैं। तो, हमारे POJO वर्गों में समान पदानुक्रम होना चाहिए। मैं संपूर्ण JSON ऑब्जेक्ट को पेज ऑब्जेक्ट कहूँगा । पेज ऑब्जेक्ट में PageInfo ऑब्जेक्ट और पोस्ट ऑब्जेक्ट सरणी शामिल हैं।
इसलिए हमें तीन अलग-अलग पीओजेओ कक्षाएं बनानी होंगी;
- पेज क्लास, पेजइंफो क्लास का एक संयोजन और पोस्ट इंस्टेंस की सरणी
- पेजइन्फो क्लास
- डाक वर्ग
एकमात्र पैकेज जो मैंने उपयोग किया है वह है जैक्सन ऑब्जेक्टमैपर, जो हम करते हैं वह डेटा बाइंडिंग है;
com.fasterxml.jackson.databind.ObjectMapper
आवश्यक निर्भरताएं, जार फाइलें नीचे सूचीबद्ध हैं;
- जैक्सन कोर-2.5.1.jar
- जैक्सन-DataBind-2.5.1.jar
- जैक्सन-एनोटेशन-2.5.0.jar
यहाँ आवश्यक कोड है;
B - मुख्य POJO वर्ग: पृष्ठ
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;
}
}
डी - बाल POJO वर्ग: पोस्ट
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 फ़ाइल: sampleJSONFile.json
मैंने अभी आपके 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