java - কিভাবে জাভা JSON পার্স




parsing (20)

আমি নিম্নলিখিত JSON টেক্সট আছে। পৃষ্ঠা pageName , pagePic , post_id , ইত্যাদি পেতে আমি কীভাবে পার্স করতে পারি?

{
   "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"
         }
    ]
}

এ - ব্যাখ্যা

POJO ( সাধারণ ওল্ড জাভা অবজেক্ট ) উদাহরণগুলিতে JSON স্ট্রিং বন্ধ করার জন্য আপনি জ্যাকসন লাইব্রেরিগুলি ব্যবহার করতে পারেন। POJO শুধুমাত্র ব্যক্তিগত ক্ষেত্র এবং পাবলিক গেট্টার / setter পদ্ধতির সঙ্গে একটি বর্গ। জ্যাকসন পদ্ধতিগুলি অনুসরণ করতে ( প্রতিফলন ব্যবহার করে ), এবং পিওজেও দৃষ্টান্তের মধ্যে JSON বস্তুর মানচিত্র হিসাবে শ্রেণির ক্ষেত্রের নামগুলি JSON অবজেক্টের ক্ষেত্রের নামগুলিতে ফিট করে।

আপনার JSON বস্তুর মধ্যে, যা আসলে একটি যৌগিক বস্তু, মূল বস্তুটি দুটি উপ-বস্তু রয়েছে। সুতরাং, আমাদের POJO ক্লাস একই অনুক্রম থাকা উচিত। আমি পৃষ্ঠা বস্তুর মত পুরো JSON অবজেক্টকে কল করব। পেজ অবজেক্টটি একটি PageInfo অবজেক্ট এবং একটি পোস্ট অবজেক্ট অ্যারে গঠিত।

সুতরাং আমরা তিনটি ভিন্ন POJO ক্লাস তৈরি করতে হবে;

  • পেজ ক্লাস, PageInfo ক্লাসের একটি সংমিশ্রণ এবং পোস্ট ইনস্ট্যান্সের অ্যারে
  • পেজইনফো ক্লাস
  • পোস্ট ক্লাস

আমি ব্যবহার করেছি শুধুমাত্র প্যাকেজ জ্যাকসন ObjectMapper, আমরা কি বাইন্ডিং তথ্য হয়;

com.fasterxml.jackson.databind.ObjectMapper

প্রয়োজনীয় নির্ভরতা, জার ফাইল নিচে তালিকাভুক্ত করা হয়;

  • জ্যাকসন-কোর-2.5.1.jar
  • জ্যাকসন-databind-2.5.1.jar
  • জ্যাকসন-টীকা-2.5.0.jar

এখানে প্রয়োজনীয় কোড আছে;

বি - মুখ্য 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;
    }

}

সি - শিশু POJO ক্লাস: PageInfo

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 ফাইল: নমুনা JSONFile.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

  1. যদি কেউ JSON থেকে জাভা অবজেক্ট তৈরি করতে চায় এবং বিপরীতভাবে, GSON বা JACKSON তৃতীয় পক্ষের জার্স ইত্যাদি ব্যবহার করুন।

    //from object to JSON 
    Gson gson = new Gson();
    gson.toJson(yourObject);
    
    // from JSON to object 
    yourObject o = gson.fromJson(JSONString,yourObject.class);
  2. কিন্তু যদি কেউ কেবল একটি JSON স্ট্রিং বিশ্লেষণ করতে এবং কিছু মান পেতে চায়, (অথবা তারের উপর পাঠানোর জন্য স্ক্র্যাচ থেকে একটি JSON স্ট্রিং তৈরি করুন) কেবল JaveEE জার ব্যবহার করুন যা জ্যাসন রিডার, জসনআরে, জসনঅবেক্ট ইত্যাদি রয়েছে। আপনি যেটি বাস্তবায়ন করতে চান javax.json মত spec। এই দুটি জার্স দিয়ে আমি জেসনকে বিশ্লেষণ করতে এবং মানগুলি ব্যবহার করতে সক্ষম।

    এই API গুলি আসলে XML এর DOM / SAX পার্সিং মডেল অনুসরণ করে।

    Response response = request.get(); // REST call 
        JsonReader jsonReader = Json.createReader(new StringReader(response.readEntity(String.class)));
        JsonArray jsonArray = jsonReader.readArray();
        ListIterator l = jsonArray.listIterator();
        while ( l.hasNext() ) {
              JsonObject j = (JsonObject)l.next();
              JsonObject ciAttr = j.getJsonObject("ciAttributes");

আগ্রহের সম্পত্তির মানটি অ্যাক্সেস করার আগে প্রায় সব উত্তর জাভাস্ক্রিপ্টে JSON এর সম্পূর্ণ deserialization প্রয়োজন। আরেকটি বিকল্প, যা এই রুটটি না করে JsonPATH ব্যবহার JsonPATH যা JSON এর জন্য XPath এর মত এবং JSON বস্তুর JsonPATH অনুমতি দেয়।

এটি একটি স্পেসিফিকেশন এবং JayWay এর ভাল লোকেরা এখানে আপনি যে স্পেসিফিকেশনটির জন্য জাভা বাস্তবায়ন তৈরি করেছেন তা তৈরি করেছেন: https://github.com/jayway/JsonPath

সুতরাং মূলত এটি ব্যবহার করতে, আপনার প্রকল্পে যোগ করুন, যেমন:

<dependency>
    <groupId>com.jayway.jsonpath</groupId>
    <artifactId>json-path</artifactId>
    <version>${version}</version>
</dependency>

এবং ব্যবহার করার জন্য:

String pageName = JsonPath.read(yourJsonString, "$.pageInfo.pageName");
String pagePic = JsonPath.read(yourJsonString, "$.pageInfo.pagePic");
String post_id = JsonPath.read(yourJsonString, "$.pagePosts[0].post_id");

ইত্যাদি ...

JSON ট্রান্সক্রিপশন করার অন্যান্য উপায়ে আরও তথ্যের জন্য JsonPath স্পেসিফিকেশন পৃষ্ঠাটি দেখুন।


আপনি গুগল গসন ব্যবহার করতে পারেন।

এই লাইব্রেরিটি ব্যবহার করে আপনাকে একই JSON কাঠামোর সাথে শুধুমাত্র একটি মডেল তৈরি করতে হবে। তারপরে মডেলটি স্বয়ংক্রিয়ভাবে ভরা হয়। আপনার 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"
        }
    ]
}

মডেল:

class MyModel {

    private PageInfo pageInfo;
    private ArrayList<Post> posts = new ArrayList<>();
}

class PageInfo {

    private String pageName;
    private String pagePic;
}

class Post {

    private String post_id;

    @SerializedName("actor_id") // <- example SerializedName
    private String actorId;

    private String picOfPersonWhoPosted;
    private String nameOfPersonWhoPosted;
    private String message;
    private String likesCount;
    private ArrayList<String> comments;
    private String timeOfPost;
}

এখন আপনি Gson লাইব্রেরি ব্যবহার করে পার্স করতে পারেন:

MyModel model = gson.fromJson(jsonString, MyModel.class);

আপনি this অনলাইন সরঞ্জাম ব্যবহার করে স্বয়ংক্রিয়ভাবে JSON থেকে মডেল তৈরি করতে পারেন।


আমি বিশ্বাস করি যে সর্বোত্তম অনুশীলনটি সরকারী জাভা JSON API এর মাধ্যমে যেতে হবে যা এখনও অগ্রগতিতে রয়েছে।


উদাহরনের জন্য উদাহরণস্বরূপ অনুমান করুন যে আপনার কেবলমাত্র একটি name সহ একটি বর্গ Person আছে।

private class Person {
    public String name;

    public Person(String name) {
        this.name = name;
    }
}

গুগল জিএসএন ( মেনন )

আমার ব্যক্তিগত পছন্দের JSON সিরিয়ালাইজেশন / অবজেক্টের ডি-সিরিয়ালাইজেশন।

Gson g = new Gson();

Person person = g.fromJson("{\"name\": \"John\"}", Person.class);
System.out.println(person.name); //John

System.out.println(g.toJson(person)); // {"name":"John"}

হালনাগাদ

আপনি যদি একটি একক বৈশিষ্ট্য পেতে চান তবে আপনি এটি সহজেই Google লাইব্রেরির সাথেও করতে পারেন:

JsonObject jsonObject = new JsonParser().parse("{\"name\": \"John\"}").getAsJsonObject();

System.out.println(jsonObject.get("name").getAsString()); //John

org.json ( http://mvnrepository.com/artifact/org.json/json )

যদি আপনি বস্তুর ডি-সিরিয়ালাইজেশনের প্রয়োজন না হয় তবে কেবল একটি বৈশিষ্ট্য পেতে, আপনি org.json চেষ্টা করতে পারেন ( অথবা উপরের GSON উদাহরণ দেখুন! )

JSONObject obj = new JSONObject("{\"name\": \"John\"}");

System.out.println(obj.getString("name")); //John

Jackson ( Maven )

ObjectMapper mapper = new ObjectMapper();
Person user = mapper.readValue("{\"name\": \"John\"}", Person.class);

System.out.println(user.name); //John

কোন বস্তুর JSON সামগ্রী বিশ্লেষণ করতে বা কেবল JSON মানগুলি পড়ার জন্য অনেকগুলি ওপেন সোর্স লাইব্রেরি উপস্থিত রয়েছে। আপনার প্রয়োজন শুধু মান পড়তে এবং কাস্টম বস্তুর এটি বিশ্লেষণ করা হয়। সুতরাং org.json লাইব্রেরি আপনার ক্ষেত্রে যথেষ্ট।

ORG.json লাইব্রেরীটি প্যারাস করতে এবং JsonObject তৈরি করুন:

JSONObject jsonObj = new JSONObject(<jsonStr>);

এখন, আপনার মানগুলি পেতে এই বস্তুটি ব্যবহার করুন:

String id = jsonObj.getString("pageInfo");

আপনি এখানে একটি সম্পূর্ণ উদাহরণ দেখতে পারেন:

কিভাবে জাভা JSON পার্স


খুব দ্রুত এবং ব্যবহার করা সহজ যা minimal-json ব্যবহার করুন। আপনি স্ট্রিং obj এবং স্ট্রিম থেকে পার্স করতে পারেন।

নমুনা তথ্য:

{
  "order": 4711,
  "items": [
    {
      "name": "NE555 Timer IC",
      "cat-id": "645723",
      "quantity": 10,
    },
    {
      "name": "LM358N OpAmp IC",
      "cat-id": "764525",
      "quantity": 2
    }
  ]
}

পার্সিং:

JsonObject object = Json.parse(input).asObject();
int orders = object.get("order").asInt();
JsonArray items = object.get("items").asArray();

JSON তৈরি করা হচ্ছে:

JsonObject user = Json.object().add("name", "Sakib").add("age", 23);

ম্যাভেন:

<dependency>
  <groupId>com.eclipsesource.minimal-json</groupId>
  <artifactId>minimal-json</artifactId>
  <version>0.9.4</version>
</dependency>

নিচের উদাহরণটি "jsonText" ভেরিয়েবল হিসাবে উপস্থাপিত প্রশ্নটিতে পাঠ্যটি কীভাবে পড়তে হয় তা দেখায়। এই সমাধানটি জাভা EE7 javax.json API ব্যবহার করে (যা অন্য কিছু উত্তরগুলিতে উল্লেখ করা হয়েছে)। একটি পৃথক উত্তর হিসেবে আমি এটি যুক্ত করার কারণটি হল নিম্নলিখিত কোডটি আসলে প্রদর্শিত প্রশ্নাবলীর কিছু অ্যাক্সেস কীভাবে দেখাবে। এই কোডটি চালানোর জন্য javax.json API এর বাস্তবায়ন দরকার। প্রয়োজনীয় প্রতিটি ক্লাসের জন্য পুরো প্যাকেজটি অন্তর্ভুক্ত করা হয়েছে কারণ আমি "আমদানি" বিবৃতিগুলি প্রকাশ করতে চাইনি।

javax.json.JsonReader jr = 
    javax.json.Json.createReader(new StringReader(jsonText));
javax.json.JsonObject jo = jr.readObject();

//Read the page info.
javax.json.JsonObject pageInfo = jo.getJsonObject("pageInfo");
System.out.println(pageInfo.getString("pageName"));

//Read the posts.
javax.json.JsonArray posts = jo.getJsonArray("posts");
//Read the first post.
javax.json.JsonObject post = posts.getJsonObject(0);
//Read the post_id field.
String postId = post.getString("post_id");

এখন, যে কেউ গিয়ে এই উত্তরটিকে ডাউনভোট করে কারণ এটি GSON, org.json, জ্যাকসন, বা অন্য কোন তৃতীয় পক্ষের ফ্রেমওয়ার্কগুলি ব্যবহার করে না, এটি প্রদত্ত পাঠ্যটি বিশ্লেষণ করার জন্য প্রশ্নের প্রতি "প্রয়োজনীয় কোড" এর একটি উদাহরণ। আমি সচেতন যে জেনারেল জেএসআর 353-এর আনুগত্য জেডিকে 9-এর জন্য বিবেচনা করা হচ্ছে না এবং যেমন JSR 353 স্পেকটি অন্য তৃতীয় পক্ষের JSON হ্যান্ডলিং বাস্তবায়ন হিসাবে একই আচরণ করা উচিত।


যদি আপনার কিছু জাভা বর্গ (বার্তা বলুন) JSON স্ট্রিং (জন্স স্ট্রিং) প্রতিনিধিত্ব করে তবে আপনি Jackson JSON লাইব্রেরি ব্যবহার করতে পারেন:

Message message= new ObjectMapper().readValue(jsonString, Message.class);

এবং বার্তা বস্তুর থেকে আপনি তার কোনো বৈশিষ্ট্য আনতে পারেন।


দ্রুত-জসন পার্সার খুব সহজ, নমনীয়, খুব দ্রুত এবং কাস্টমাইজেবল। এটা চেষ্টা করুন

বৈশিষ্ট্য:

  • JSON স্পেসিফিকেশন সঙ্গে সঙ্গতিপূর্ণ (RFC4627)
  • উচ্চ-পারফরমেন্স JSON পার্সার
  • নমনীয় / কনফিগারযোগ্য পার্সিং পদ্ধতির সমর্থন করে
  • কোন JSON অনুক্রমের কী / মান জোড়া জোড়া কনফিগারযোগ্য বৈধতা
  • ব্যবহার করা সহজ # খুব ছোট পদাঙ্ক
  • আপগ্রেড বন্ধুত্বপূর্ণ এবং ব্যতিক্রম ট্রেস সহজ
  • প্লাগযোগ্য কাস্টম বৈধকরণ সমর্থন - কী এবং মানগুলি কাস্টম বৈধতার কনফিগার করে কনফিগার করার মাধ্যমে কীগুলি যাচাই করা যেতে পারে
  • বৈধকরণ এবং অ-যাচাইকরণ পার্সার সমর্থন
  • দ্রুত-JSON বৈধকরণ পসারার ব্যবহার করার জন্য দুটি ধরণের কনফিগারেশন (JSON / XML) সমর্থন
  • JDK 1.5 প্রয়োজন
  • বহিরাগত লাইব্রেরি উপর নির্ভরতা নেই
  • বস্তু serialization মাধ্যমে JSON জেনারেশন জন্য সমর্থন
  • পার্সিং প্রক্রিয়া সময় সংগ্রহ ধরনের নির্বাচন জন্য সমর্থন

এটি এভাবে ব্যবহার করা যেতে পারে:

JsonParserFactory factory=JsonParserFactory.getInstance();
JSONParser parser=factory.newJsonParser();
Map jsonMap=parser.parseJson(jsonString);

org.json লাইব্রেরি ব্যবহার করা সহজ। নিচের উদাহরণ কোড:

import org.json.*;


JSONObject obj = new JSONObject(" .... ");
String pageName = obj.getJSONObject("pageInfo").getString("pageName");

JSONArray arr = obj.getJSONArray("posts");
for (int i = 0; i < arr.length(); i++)
{
    String post_id = arr.getJSONObject(i).getString("post_id");
    ......
}

আপনি জাভাতে পার্স JSON : থেকে আরো উদাহরণ খুঁজে পেতে পারেন

ডাউনলোডযোগ্য জার: http://mvnrepository.com/artifact/org.json/json


Gson শিখতে এবং বাস্তবায়ন সহজ, আমরা কি জানতে হবে দুটি পদ্ধতি অনুসরণ করা হয়

  • toJson () - জাভা অবজেক্টকে JSON বিন্যাসে রূপান্তর করুন

  • থেকে JSON () - জাভাস্ক্রিপ্ট জাভা বস্তু রূপান্তর

`

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import com.google.gson.Gson;

public class GsonExample {
    public static void main(String[] args) {

    Gson gson = new Gson();

    try {

        BufferedReader br = new BufferedReader(
            new FileReader("c:\\file.json"));

        //convert the json string back to object
        DataObject obj = gson.fromJson(br, DataObject.class);

        System.out.println(obj);

    } catch (IOException e) {
        e.printStackTrace();
    }

    }
}

`


আমার মত JSON আছে:

{
   "pageInfo": {
         "pageName": "abc",
         "pagePic": "http://example.com/content.jpg"
    }
}

জাভা ক্লাস

class PageInfo {

    private String pageName;
    private String pagePic;

    // Getters and setters
}

এই JSON কে জাভা ক্লাসে রূপান্তর করার জন্য কোড।

    PageInfo pageInfo = JsonPath.parse(jsonString).read("$.pageInfo", PageInfo.class);

ম্যাভেন

<dependency>
    <groupId>com.jayway.jsonpath</groupId>
    <artifactId>json-path</artifactId>
    <version>2.2.0</version>
</dependency>

এই সব প্রথম একটি বৈধ জসন তথ্য নয়।

আপনি দুটি Json উপাদানের মধ্যে একটি কমা রাখা আছে pageInfoএবং posts

এখানে বৈধ জson হয়:

{
   "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"
         }
    ]
}

এখন আপনি উপরে বর্ণিত কোনও পদ্ধতি ব্যবহার করে এটি বিশ্লেষণ করতে পারেন, অথবা যদি আপনি org.json বাস্তবায়ন করেন তবে এটি সেরা।


আপনি JsonNodeআপনার JSON স্ট্রিং একটি কাঠামোগত গাছ উপস্থাপনা জন্য ব্যবহার করতে পারেন । এটা শিলা কঠিন Jackson যা সর্বজনীন হয়।

ObjectMapper mapper = new ObjectMapper();
JsonNode yourObj = mapper.readTree("{\"k\":\"v\"}");

আমরা JSONObject ক্লাসটি একটি JSON স্ট্রিংকে একটি JSON বস্তুতে রূপান্তর করতে এবং JSON অবজেক্টের উপর পুনরাবৃত্তি করতে ব্যবহার করতে পারি। নিম্নলিখিত কোড ব্যবহার করুন।

JSONObject jObj = new JSONObject(contents.trim());
Iterator<?> keys = jObj.keys();

while( keys.hasNext() ) {
  String key = (String)keys.next();
  if ( jObj.get(key) instanceof JSONObject ) {           
    System.out.println(jObj.getString(String key));
  }
}

এই পৃষ্ঠার শীর্ষ উত্তরগুলি একটি সম্পত্তি সহ বস্তুর মতো সহজ উদাহরণ ব্যবহার করে (যেমন {name: value})। আমি এখনও যে সহজ কিন্তু বাস্তব জীবন উদাহরণ কেউ সাহায্য করতে পারেন।

তাই এই গুগল অনুবাদ API দ্বারা ফিরে JSON হয়:

{
  "data": 
     {
        "translations": 
          [
            {
              "translatedText": "Arbeit"
             }
          ]
     }
}

আমি গুগল এর গসন ব্যবহার করে "অনুবাদিত টেক্সট" বৈশিষ্ট্যটি যেমন "আরবিট" এর মান পুনরুদ্ধার করতে চাই।

দুই সম্ভাব্য পন্থা:

  1. শুধু একটি প্রয়োজনীয় বৈশিষ্ট্য পুনরুদ্ধার করুন

    String json  = callToTranslateApi("work", "de");
    JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
    return jsonObject.get("data").getAsJsonObject()
            .get("translations").getAsJsonArray()
            .get(0).getAsJsonObject()
            .get("translatedText").getAsString();
  2. JSON থেকে জাভা অবজেক্ট তৈরি করুন

    class ApiResponse {
        Data data;      
        class Data {
            Translation[] translations;         
            class Translation {
                String translatedText;
            }
         }
     }

    ...

     Gson g = new Gson();
     String json =callToTranslateApi("work", "de");
     ApiResponse response = g.fromJson(json, ApiResponse.class);
     return response.data.translations[0].translatedText;

প্রথমে আপনাকে এটি করার জন্য একটি বাস্তবায়ন লাইব্রেরি নির্বাচন করতে হবে।

তাদেরকে JSON প্রসেসিং (JSR 353) এর জন্য জাভা এপিআই , বিশ্লেষণ করতে জেনারেট করেন, রুপান্তর, এবং কোয়েরি JSON সামগ্রী মডেল ব্যবহার ও API গুলি স্ট্রিমিং পোর্টেবল API গুলি প্রদান করে।

রেফারেন্স বাস্তবায়ন এখানে: https://jsonp.java.net/

এখানে আপনি JSR 353 এর বাস্তবায়নগুলির একটি তালিকা খুঁজে পেতে পারেন :

API এগুলি যা JSR-353 (JSON) প্রয়োগ করে

এবং আপনি সিদ্ধান্ত নিতে সাহায্য করার জন্য ... আমি এই নিবন্ধটিও খুঁজে পেয়েছি:

http://blog.takipi.com/the-ultimate-json-library-json-simple-vs-gson-vs-jackson-vs-json/

যদি আপনি জ্যাকসনের জন্য যান তবে জ্যাকসন ব্যবহার করে জাভা থেকে জাভা থেকে / এর মধ্যে রূপান্তর সম্পর্কিত একটি ভাল নিবন্ধ এখানে রয়েছে: https://www.mkyong.com/java/how-to-convert-java-object-to-from-json-jackson/

আশা করি এটা সাহায্য করবে!


ব্যবহার করতে পারেন এ্যাপাচি @Model টীকা তৈরি করতে জাভা মডেল কাঠামো প্রতিনিধিত্বমূলক শ্রেণীর তাদেরকে JSON ফাইল এবং বিভিন্ন উপাদানের অ্যাক্সেস করতে তাদের ব্যবহার তাদেরকে JSON গাছ। অন্য সমাধানগুলির থেকে ভিন্ন এই প্রতিফলন ছাড়া সম্পূর্ণরূপে কাজ করে এবং এইভাবে প্রতিফলন অসম্ভব বা উল্লেখযোগ্য ওভারহেডের সাথে আসে এমন পরিবেশের জন্য উপযুক্ত।

ব্যবহার দেখাচ্ছে একটি নমুনা Maven প্রকল্প আছে । প্রথমত এটি গঠন সংজ্ঞায়িত করে:

@Model(className="RepositoryInfo", properties = {
    @Property(name = "id", type = int.class),
    @Property(name = "name", type = String.class),
    @Property(name = "owner", type = Owner.class),
    @Property(name = "private", type = boolean.class),
})
final class RepositoryCntrl {
    @Model(className = "Owner", properties = {
        @Property(name = "login", type = String.class)
    })
    static final class OwnerCntrl {
    }
}

এবং তারপরে প্রদত্ত ইনপুট প্রবাহটি প্যারিস করতে উত্পন্ন রেপোসিটারইনফো এবং মালিক ক্লাসগুলি ব্যবহার করে এবং সেটি করার সময় নির্দিষ্ট তথ্য চয়ন করুন:

List<RepositoryInfo> repositories = new ArrayList<>();
try (InputStream is = initializeStream(args)) {
    Models.parse(CONTEXT, RepositoryInfo.class, is, repositories);
}

System.err.println("there is " + repositories.size() + " repositories");
repositories.stream().filter((repo) -> repo != null).forEach((repo) -> {
    System.err.println("repository " + repo.getName() + 
        " is owned by " + repo.getOwner().getLogin()
    );
})

হ্যাঁ, ওটাই! এর পাশাপাশি এখানে একটি লাইভ জিস্ট একই ধরনের উদাহরণকে অ্যাসিঙ্ক্রোনাস নেটওয়ার্ক যোগাযোগের সাথে একসাথে দেখাচ্ছে।





parsing