如何在Java中将包含多个JSON对象的字符串转换为实际的JSON对象

时间:2019-04-21 14:33:30

标签: java json rest request

我正在开发一个应用程序,该应用程序应该是某种类型的游戏,并且为了保存数据并使之可被多个客户端使用,我建立了一个REST Backend API,该API仅用于在与之之间分发和更新游戏数据。其他玩家。

我已经弄清楚了如何向API发出“ GET”请求和其他请求,但是在一般的“ GET”请求过程中,服务器端返回了资源中所有可用对象的列表,我得到了返回字符串说

    [{"id": 0, "ownerid": 0, "position": [0,0], "size": 1}, {"id": 1, "ownerid": 0, "position": [0,0], "size": 1}]

因此我自然需要将它们解析为多个JSONObjects。但是,每当我尝试使用逻辑方法执行此操作时,编译器都会告诉我这是错误的,因为[]包围了整个响应实体。

这是从控制台复制的文字错误代码:

    Exception in thread "main" org.json.JSONException: A JSONObject text must begin with '{' at 1 [character 2 line 1]
    at org.json.JSONTokener.syntaxError(JSONTokener.java:505)
    at org.json.JSONObject.<init>(JSONObject.java:215)
    at org.json.JSONObject.<init>(JSONObject.java:399)
    at Game.Game.<init>(Game.java:36)
    at Main.main(Main.java:7)

这是我用来转换的代码:

    Client c = ClientBuilder.newClient();
    WebTarget wt = c.target("http://localhost:3000").path("villages");
    Invocation.Builder invBuild = wt.request(MediaType.APPLICATION_JSON);
    Response res = invBuild.get();

    JSONObject json = new JSONObject(res.readEntity(String.class));
    String[] ids = JSONObject.getNames(json);
    JSONArray arr = json.toJSONArray(new JSONArray(ids));

那里的当前代码是从另一个StackOverflow帖子中读取的,但是如上所述,由于[]响应字符串周围,所以它无法工作。

用于请求的已使用库-响应客户端逻辑取自泽西岛库。

0 个答案:

没有答案