どのように私はジャクソンを使用してオブジェクトJSONを反復処理することができますか?

花:

私は最終的に私のJSONデータセットを使用して転置インデックスを作成します。私は1つのJSONオブジェクトを解析する方法を知っているが、どのように私は多くを反復処理することができますか?ここに私が働いているものです。

ファイル1:

{
    "doc_id": "2324jos",
    "screen_name": "twitter_user101",
    "tweet_text": "Its a beautiful day to be productive",
    "hashtags": "[]",
    "links": "[]",
    "place_type": "city",
    "place_name": "Evergreen Park",
    "created_at": "2019-02-08 22:24:03"
}

私のコード:

public class ParseJson {
    public static void main(String[] args) throws Exception {
        // this is the key object to convert JSON to Java
        Tweet tweet;
        ObjectMapper mapper = new ObjectMapper();
        try {
            File json = new File("test.json");
            tweet = mapper.readValue(json, Tweet.class);
            System.out.println("Java object created from JSON String :");
            System.out.println(tweet);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

public class Tweet {
    public String doc_id;
    public String screen_name;
    public String tweet_text;
    public String hashtags;
    public String links;
    public String place_type;
    public String place_name;
    public String created_at;

    public Tweet() {

    }

    public Tweet(String doc_id, String screen_name, String tweet_text, String hashtags, String links, String place_type, String place_name, String created_at) {
        this.doc_id = doc_id;
        this.screen_name = screen_name;
        this.tweet_text = tweet_text;
        this.hashtags = hashtags;
        this.links = links;
        this.place_name = place_name;
        this.place_type = place_type;
        this.created_at = created_at;
    }

    @Override
    public String toString() {
        return doc_id + screen_name + tweet_text;
    }
}

:今、私は2 JSON配列内のオブジェクトを持って、このJSONファイルを反復処理したいです

ファイル2:

[
    {
        "doc_id": "2324jos",
        "screen_name": "b'LIBBYRULZ'",
        "tweet_text": "@ABC ya'll be lying",
        "hashtags": "[]",
        "links": "[]",
        "place_type": "city",
        "place_name": "Evergreen Park",
        "created_at": "2019-02-08 22:24:03"
    },
    {
        "doc_id": "8982hol",
        "screen_name": "b'eddylee_1'",
        "tweet_text": "Hungry for money",
        "hashtags": "[]",
        "links": "[]",
        "place_type": "city",
        "place_name": "Manhattan",
        "created_at": "2/7/2019 17:01"
    }
]     

どのように私はDOC_IDは一意のキーであるところ、そうするためにジャクソンを使用して、私の上記のコードを調整することができますか?私は、各DOC_ID各JSONオブジェクト内のすべてのデータを返すことができるようにしたいです。

マット:

ジャクソンを使用してJSONオブジェクトの配列を解析するには:

Tweet[] tweets = mapper.readValue(json, Tweet[].class);

トリックを行う必要があります。下記参照:

public class ParseJson {
    public static void main(String[] args) throws Exception {

        Tweet[] tweets;
        ObjectMapper mapper = new ObjectMapper();
        try {
            File json = new File("test.json");
            tweets = mapper.readValue(json, Tweet[].class);
            System.out.println("Java object created from JSON String :");
            Arrays.asList(tweets).forEach(System.out::println); // Prints each element in the array
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=222880&siteId=1