将序列化的JSON对象转换回Java



我正在编写一个Java应用程序,通过REST API向运行在本地网络中的命名实体识别服务(deeppavlov)发出请求。

所以我请求数据如下:

String text = "Welcome to Moscow, John";
List<String> textList = new ArrayList<String>();
textList.add(text);
JSONObject json = new JSONObject();
json.put("x", textList);
String URL = "http://localhost:5005/model";
HttpClient client = HttpClient.newBuilder()
.version(Version.HTTP_1_1)
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(URL))
.header("accept", "application/json")
.header("Content-Type", "application/json")
.POST(BodyPublishers.ofString(json.toString()))
.build();
try {
HttpResponse<String> response = client.send(request, BodyHandlers.ofString());
System.out.println(response.body());
System.out.println(response.body().getClass());
} catch (IOException | InterruptedException e) {

}

结果是:

[[["Welcome","to","Moscow","、"、"John"],["O","O","B-GPE","O","B-PERSON"]]]类以

这是一个字符串,我不知道如何将其转换为对象,数组,映射或列表来迭代。请帮助。

这取决于您用来反序列化字符串的库。似乎您正在使用org json代码,因此可能的解决方案使用JSONTokener:

将JSON (RFC 4627)编码的字符串解析为相应的对象

,然后使用方法nextValue:

返回输入的下一个值。可以是JSONObject, JSONArray, String, Boolean, Integer, Long, Double或jsonobject# NULL。

代码如下

Object jsonObject = new JSONTokener(jsonAsString).nextValue();

相关内容

  • 没有找到相关文章

最新更新