我正在开发一个应用程序,该应用程序应该是某种类型的游戏,并且为了保存数据并使之可被多个客户端使用,我建立了一个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帖子中读取的,但是如上所述,由于[]响应字符串周围,所以它无法工作。
用于请求的已使用库-响应客户端逻辑取自泽西岛库。