java - ميناء - نسبة الاسلام في اندونيسيا




كيفية تحليل JSON في جاوة (19)

لدي نص 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"
         }
    ]
}

أ - شرح

يمكنك استخدام مكتبات Jackson ، لربط سلسلة JSON إلى مثيلات POJO ( Plain Old Java Object ). POJO هو مجرد فئة مع الحقول الخاصة فقط وطرق getter / setter العامة. سيقوم جاكسون باجتياز الطرق (باستخدام الانعكاس ) ، ثم يعيّن كائن JSON في مثيل POJO حيث تتناسب أسماء الحقول للفئة مع أسماء الحقول الخاصة بعنصر JSON.

في كائن JSON الخاص بك ، والذي هو في الواقع كائن مركب ، يتكون الكائن الرئيسي o من جسمين فرعيين. لذا ، يجب أن يكون لدينا فئات POJO نفس التسلسل الهرمي. سأتصل بكامل عنصر JSON ككائن الصفحة . يتكون كائن الصفحة من كائن PageInfo و صفيف كائن النشر .

لذلك علينا إنشاء ثلاث فئات مختلفة من POJO ؛

  • فئة الصفحة ، وهو مركب من فئة PageInfo ومجموعة من مثيلات Post
  • فئة PageInfo
  • وظائف الفئة

الحزمة الوحيدة التي استخدمتها هي جاكسون ObjectMapper ، ما نقوم به هو بيانات ملزمة.

com.fasterxml.jackson.databind.ObjectMapper

التبعيات المطلوبة ، يتم سرد ملفات jar أدناه ؛

  • جاكسون النواة 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 الملف: 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

  1. إذا أراد أحد إنشاء كائن JAVA من 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 jar الذي يحتوي على JsonReader و JsonArray و JsonObject الخ. قد ترغب في تنزيل تطبيق ذلك المواصفات مثل javax.json. مع هاتين الجرار أنا قادر على تحليل json واستخدام القيم.

    تتبع واجهات برمجة التطبيقات هذه فعليًا نموذج تحليل DOM / SAX لـ XML.

    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");
    

إذا كان لديك بعض فئات Java (مثل Message) تمثل سلسلة JSON (jsonString) ، فيمكنك استخدام مكتبة Jackson JSON مع:

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

ومن كائن الرسالة يمكنك جلب أي من سماته.


استخدم minimal-json سريع جدًا وسهل الاستخدام. يمكنك تحليل من سلسلة obj و Stream.

بيانات العينة:

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

بالإضافة إلى إجابات أخرى ، أنا أوصي بهذا this خدمة this عبر الإنترنت this Java سريعة الإنشاء من json أو json schema لـ GSON، Jackson 1.x أو Jackson 2.x. على سبيل المثال ، إذا كان لديك:

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

تم إنشاء jsonschema2pojo.org لصالح GSON:

@Generated("org.jsonschema2pojo")
public class Container {
    @SerializedName("pageInfo")
    @Expose
    public PageInfo pageInfo;
    @SerializedName("posts")
    @Expose
    public List<Post> posts = new ArrayList<Post>();
}

@Generated("org.jsonschema2pojo")
public class PageInfo {
    @SerializedName("pageName")
    @Expose
    public String pageName;
    @SerializedName("pagePic")
    @Expose
    public String pagePic;
}

@Generated("org.jsonschema2pojo")
public class Post {
    @SerializedName("post_id")
    @Expose
    public String postId;
    @SerializedName("actor_id")
    @Expose
    public long actorId;
    @SerializedName("picOfPersonWhoPosted")
    @Expose
    public String picOfPersonWhoPosted;
    @SerializedName("nameOfPersonWhoPosted")
    @Expose
    public String nameOfPersonWhoPosted;
    @SerializedName("message")
    @Expose
    public String message;
    @SerializedName("likesCount")
    @Expose
    public long likesCount;
    @SerializedName("comments")
    @Expose
    public List<Object> comments = new ArrayList<Object>();
    @SerializedName("timeOfPost")
    @Expose
    public long timeOfPost;
}

بما أن لا أحد ذكر ذلك حتى الآن ، فإليك بداية لحل باستخدام Nashorn (جافا سكريبت runtime جزء من Java 8).

حل

private static final String EXTRACTOR_SCRIPT =
    "var fun = function(raw) { " +
    "var json = JSON.parse(raw); " +
    "return [json.pageInfo.pageName, json.pageInfo.pagePic, json.posts[0].post_id];};";

public void run() throws ScriptException, NoSuchMethodException {
    ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
    engine.eval(EXTRACTOR_SCRIPT);
    Invocable invocable = (Invocable) engine;
    JSObject result = (JSObject) invocable.invokeFunction("fun", JSON);
    result.values().forEach(e -> System.out.println(e));
}

مقارنة الأداء

كتبت محتوى JSON يحتوي على ثلاث صفائف على التوالي 20 و 20 و 100 عنصر. أريد فقط الحصول على 100 عنصر من المجموعة الثالثة. أستخدم وظيفة JavaScript التالية لتحليل وتلقي الإدخالات الخاصة بي.

var fun = function(raw) {JSON.parse(raw).entries};

تشغيل المكالمة مليون مرة باستخدام Nashorn يستغرق 7.5 ~ 7.8 ثانية

(JSObject) invocable.invokeFunction("fun", json);

يستغرق org.json 20 ~ 21 ثانية

new JSONObject(JSON).getJSONArray("entries");

جاكسون يأخذ 6.5 ~ 7 ثواني

mapper.readValue(JSON, Entries.class).getEntries();

في هذه الحالة ، يؤدي جاكسون أداءً أفضل من ناشورن ، الذي يؤدي أداءً أفضل من org.json. ناشرون API أصعب من استخدام org.json أو جاكسون. اعتمادًا على متطلباتك ، يمكن أن يكون كل من Jackson و Nashorn حلولًا قابلة للتطبيق.


مكتبة 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");
    ......
}

قد تجد أمثلة إضافية من: Parse JSON in Java

جرة قابلة للتنزيل: http://mvnrepository.com/artifact/org.json/json


من أجل المثال ، لنفترض أن لديك شخصًا Person باسم فقط.

private class Person {
    public String name;

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

Google GSON ( Maven )

المفضلة الشخصية الخاصة بي لسلسلة 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 ( org.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 المتاحة في Java.

الأكثر شهرة هي: جاكسون ، GSON ، Genson ، FastJson و org.json.

هناك عادة ثلاثة أشياء يجب على المرء النظر إليها لاختيار أي مكتبة:

  1. أداء
  2. سهولة الاستخدام (رمز بسيط للكتابة ومقروء) - يتناسب مع الميزات.
  3. لتطبيقات الجوال: حجم التبعية / الجرة

بشكل خاص للمكتبات JSON (وأي libs التسلسل / deserialization) ، عادة ما يكون ربط البيانات مهمة لأنها تزيل الحاجة لكتابة رمز لوحة المرجل لحزم / تفريغ البيانات.

ل 1 ، انظر هذا المعيار: github.com/fabienrenaud/java-json-benchmark فعلت باستخدام JMH الذي يقارن JMH (جاكسون ، gson ، genson ، fastjson ، org.json ، jsonp) من serializers و deserializers باستخدام تيار و APIs databind. ل 2 ، يمكنك أن تجد العديد من الأمثلة على شبكة الإنترنت. يمكن أيضًا استخدام المؤشر المرجعي أعلاه كمصدر من الأمثلة ...

مقاربة سريعة للمقياس: يقدم جاكسون 5 إلى 6 مرات أفضل من org.json وأكثر من مرتين أفضل من GSON.

لمثالك الخاص ، تقوم التعليمة البرمجية التالية بفك شفرة json مع jackson:

public class MyObj {

    private PageInfo pageInfo;
    private List<Post> posts;

    static final class PageInfo {
        private String pageName;
        private String pagePic;
    }

    static final class Post {
        private String post_id;
        @JsonProperty("actor_id");
        private String actorId;
        @JsonProperty("picOfPersonWhoPosted")
        private String pictureOfPoster;
        @JsonProperty("nameOfPersonWhoPosted")
        private String nameOfPoster;
        private String likesCount;
        private List<String> comments;
        private String timeOfPost;
    }

    private static final ObjectMapper JACKSON = new ObjectMapper();
    public static void main(String[] args) throws IOException {
        MyObj o = JACKSON.readValue(args[0], MyObj.class); // assumes args[0] contains your json payload provided in your question.
    }
}

اسمحوا لي أن أعرف إذا كان لديك أي أسئلة.


هناك العديد من مكتبات المصدر المفتوح موجودة لتحليل محتوى JSON إلى كائن أو لقراءة قيم JSON فقط. الشرط الخاص بك هو فقط لقراءة القيم وتحليلها إلى كائن مخصص. لذلك مكتبة org.json كافية في قضيتك.

استخدم مكتبة org.json لتحليلها وإنشاء JsonObject:

JSONObject jsonObj = new JSONObject(<jsonStr>);

الآن ، استخدم هذا الكائن للحصول على قيمك:

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

يمكنك رؤية مثال كامل هنا:

كيفية تحليل JSON في جاوة


يمكنك استخدام مكتبة Gson لتوزيع سلسلة JSON.

Gson gson = new Gson();
JsonObject jsonObject = gson.fromJson(jsonAsString, JsonObject.class);

String pageName = jsonObject.getAsJsonObject("pageInfo").get("pageName").getAsString();
String pagePic = jsonObject.getAsJsonObject("pageInfo").get("pagePic").getAsString();
String postId = jsonObject.getAsJsonArray("posts").get(0).getAsJsonObject().get("post_id").getAsString();

يمكنك أيضًا تكرار صفيف "المشاركات" على النحو التالي:

JsonArray posts = jsonObject.getAsJsonArray("posts");
for (JsonElement post : posts) {
  String postId = post.getAsJsonObject().get("post_id").getAsString();
  //do something
}

يوضح المثال أدناه كيفية قراءة النص في السؤال ، والممثل كمتغير "jsonText". يستخدم هذا الحل واجهة برمجة التطبيقات Java EE7 javax.json (والتي تم ذكرها في بعض الإجابات الأخرى). السبب الذي أضفته إليه كإجابة منفصلة هو أن الشفرة التالية تعرض كيفية الوصول إلى بعض القيم المعروضة في السؤال. سيكون تطبيق واجهة برمجة التطبيقات javax.json مطلوبًا لتشغيل هذا الرمز. تم تضمين الحزمة الكاملة لكل من الفئات المطلوبة لأنني لم أكن أريد الإعلان عن عبارات "الاستيراد".

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 أو Jackson أو أي من إطارات الجهات الأخرى المتاحة ، فهو مثال على "الرمز المطلوب" لكل سؤال لتحليل النص المقدم. إنني أدرك تمامًا أن الالتزام بمعيار JSR 353 المعياري الحالي لم يتم اعتباره بالنسبة لـ JDK 9 وبالتالي يجب معاملة مواصفات JSR 353 بنفس طريقة التعامل مع أي تطبيق آخر لـ JSON.


Gson من السهل تعلم وتنفيذ ، ما نحتاج إلى معرفة اتباع طريقتين

  • toJson () - تحويل كائن Java إلى تنسيق JSON

  • fromJson () - تحويل JSON إلى كائن Java

`

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();
    }

    }
}

`


I have JSON like this:

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

Java class

class PageInfo {

    private String pageName;
    private String pagePic;

    // Getters and setters
}

Code for converting this JSON to a Java class.

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

Maven

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

One can use Apache @Model annotation to create Java model classes representing structure of JSON files and use them to access various elements in the JSON tree. Unlike other solutions this one works completely without reflection and is thus suitable for environments where reflection is impossible or comes with significant overhead.

There is a sample Maven project showing the usage. First of all it defines the structure:

@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 {
    }
}

and then it uses the generated RepositoryInfo and Owner classes to parse the provided input stream and pick certain information up while doing that:

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()
    );
})

That is it! In addition to that here is a live gist showing similar example together with asynchronous network communication.


Read the following blog post, JSON in Java .

This post is a little bit old, but still I want to answer you question.

Step 1: Create a POJO class of your data.

Step 2: Now create a object using JSON.

Employee employee = null;
ObjectMapper mapper = new ObjectMapper();
try{
    employee =  mapper.readValue(newFile("/home/sumit/employee.json"), Employee.class);
} 
catch (JsonGenerationException e){
    e.printStackTrace();
}

For further reference you can refer to the following link .


We can use the JSONObject class to convert a JSON string to a JSON object, and to iterate over the JSON object. Use the following code.

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));
  }
}

You can use JsonNode for a structured tree representation of your JSON string. It's part of the rock solid Jackson which is omnipresent.

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

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

Java code :

JSONObject obj = new JSONObject(responsejsonobj);
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");
    ......etc
}






parsing