GSON - convert a string into a JsonArray

2019-09-21 15:19发布

问题:

I am trying to convert a string into a JsonArray. So far I have tried to do the following:

Gson().toJson(string)

Gson().toJsonTree(string)

both throw an exception saying that the argument is not a JsonArray.

Here is the string, as you can see it is a JsonArray:

"[{\"match\":{\"id\":92757102,\"tournament_id\":3666234,\"state\":\"open\",\"player1_id\":58602461,\"player2_id\":58602459,\"player1_prereq_match_id\":null,\"player2_prereq_match_id\":null,\"player1_is_prereq_match_loser\":false,\"player2_is_prereq_match_loser\":false,\"winner_id\":null,\"loser_id\":null,\"started_at\":\"2017-07-17T19:10:07.588-04:00\",\"created_at\":\"2017-07-17T19:10:07.476-04:00\",\"updated_at\":\"2017-07-17T19:10:07.588-04:00\",\"identifier\":\"A\",\"has_attachment\":false,\"round\":1,\"player1_votes\":null,\"player2_votes\":null,\"group_id\":null,\"attachment_count\":null,\"scheduled_time\":null,\"location\":null,\"underway_at\":null,\"optional\":false,\"rushb_id\":null,\"completed_at\":null,\"suggested_play_order\":1,\"prerequisite_match_ids_csv\":\"\",\"scores_csv\":\"\"}}]"

回答1:

Gson().fromJson(string, JsonArray::class.java)



回答2:

toJson() renders a json object as a string (of json).

You want the fromJson() method, which converts a string to a json object.

Try:

new Gson().fromJson(string, JsonArray.class)