如何在Java中将JSON字符串转换为JSON对象(Gson)?

如何在Java中将JSON字符串转换为JSON对象(Gson)?,java,json,rest,spring-boot,Java,Json,Rest,Spring Boot,我正在使用一个外部API,响应主体是JSON格式的字符串。我使用Gson将字符串解析为JSON对象。但是,我在尝试在浏览器中显示对象时遇到以下错误 SyntaxError:JSON.parse:的第1行第1列处出现意外字符 JSON数据 这是我的密码: 控制器 @RequestMapping("/player") public JsonArray displayPlayer() throws Exception{ String player = "PacSnackz";

我正在使用一个外部API,响应主体是JSON格式的字符串。我使用
Gson
将字符串解析为JSON对象。但是,我在尝试在浏览器中显示对象时遇到以下错误

SyntaxError:JSON.parse:的第1行第1列处出现意外字符 JSON数据

这是我的密码:

控制器

    @RequestMapping("/player")
public JsonArray displayPlayer() throws Exception{


    String player = "PacSnackz";

    smite.createSession();

    String test = smite.getPlayer(player);

    JsonArray playerObj = new JsonParser().parse(test).getAsJsonArray();

    return playerObj;

}
Smite类

      public String getPlayer(String player) throws Exception {
        if (!isSessionValid() && !createSession()) return "session null";
        return getURL(combine(new String[] {
                baseURL + "getplayer" + responseFormat,
                devID,
                getSignature("getplayer"),
                sessionID,
                getTimestamp(),
                player
        }, "/"));
}
这是JSON字符串的外观:

JSON字符串

[{"Avatar_URL":"","Created_Datetime":"8\/16\/2016 4:30:14 AM","Id":9993055,"Last_Login_Datetime":"4\/23\/2018 8:47:56 PM","Leaves":3,"Level":17,"Losses":19,"MasteryLevel":1,"Name":"PacSnackz","Personal_Status_Message":"","Rank_Stat_Conquest":0,"Rank_Stat_Duel":0,"Rank_Stat_Joust":0,"RankedConquest":{"Leaves":0,"Losses":0,"Name":"League","Points":0,"PrevRank":0,"Rank":0,"Rank_Stat_Conquest":null,"Rank_Stat_Duel":null,"Rank_Stat_Joust":null,"Season":0,"Tier":0,"Trend":0,"Wins":0,"player_id":null,"ret_msg":null},"RankedDuel":{"Leaves":0,"Losses":0,"Name":"Duel","Points":0,"PrevRank":0,"Rank":0,"Rank_Stat_Conquest":null,"Rank_Stat_Duel":null,"Rank_Stat_Joust":null,"Season":0,"Tier":0,"Trend":0,"Wins":0,"player_id":null,"ret_msg":null},"RankedJoust":{"Leaves":0,"Losses":0,"Name":"Joust","Points":0,"PrevRank":0,"Rank":0,"Rank_Stat_Conquest":null,"Rank_Stat_Duel":null,"Rank_Stat_Joust":null,"Season":0,"Tier":0,"Trend":0,"Wins":0,"player_id":null,"ret_msg":null},"Region":"North America","TeamId":0,"Team_Name":"","Tier_Conquest":0,"Tier_Duel":0,"Tier_Joust":0,"Total_Achievements":28,"Total_Worshippers":510,"Wins":35,"ret_msg":null}]

我正在使用SpringBootJava和Google的Gson库。我也调查过杰克逊,但也没有运气

我找到了答案。诀窍是将玩家设置为阵列。对于其他对象,我使用For循环返回多个对象。在本例中,由于只有一名玩家,因此将其设置为0

@RequestMapping("/player")
public Player displayPlayer() throws Exception{


    String player = "PacSnackz";

    smite.createSession();

    String test = smite.getPlayer(player);

    Gson gson = new Gson();

    Player[] playerObj = gson.fromJson(test, Player[].class);

    return playerObj[0];



}
我不确定JSON数组是否被公认为有效的JSON根对象。我可以看到GSON库将如何考虑您的JSON字符串无效。