首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java中将JSON字符串转换为JSON对象(Gson)?

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

Stack Overflow用户
提问于 2018-04-23 22:26:24
回答 1查看 780关注 0票数 0

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

SyntaxError: JSON.parse: JSON数据第1列中的意外字符

这是我的代码:

控制器

代码语言:javascript
复制
    @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类

代码语言:javascript
复制
      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字符串

代码语言:javascript
复制
[{"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}]

我正在使用和Google的Gson库。我也在没有运气的情况下调查过杰克逊。

EN

回答 1

Stack Overflow用户

发布于 2018-05-04 00:33:25

我想出了答案。诀窍是把玩家设置成一个数组。对于其他对象,我使用For循环返回多个对象。对于这个例子,它被设置为0,因为只有一个播放器。

代码语言:javascript
复制
@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];



}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49990802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档