在 Java 中将序列化的 JSON 对象转换回
Posted
技术标签:
【中文标题】在 Java 中将序列化的 JSON 对象转换回【英文标题】:Converting serialized JSON object back in Java 【发布时间】:2021-10-13 09:00:10 【问题描述】:我正在编写一个 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)
结果我得到:
[[["欢迎","to","莫斯科",",","约翰"],["O","O","B-GPE","O","B-PERSON "]]] 类 java.lang.String
它是一个字符串,我不知道如何将其转换为对象、数组、映射或列表以进行迭代。请帮忙。
【问题讨论】:
【参考方案1】:这取决于您用来反序列化字符串的库。
看来您正在使用 org json 代码,因此可能的解决方案使用 JSONTokener
:
将 JSON (RFC 4627) 编码的字符串解析为相应的对象
然后使用nextValue
的方法:
从输入返回下一个值。可以是 JSONObject、JSONArray、String、Boolean、Integer、Long、Double 或 JSONObject#NULL。
代码如下
Object jsonObject = new JSONTokener(jsonAsString).nextValue();
【讨论】:
是import org.json.JSONTokener;
吗?我得到cannot find symbol [ERROR] symbol: class JSONTokener [ERROR] location: package org.json
是的,适用于安卓系统。否则你需要使用后端库来适应
好的@Davide,我现在找到了:import org.json.simple.parser.ParseException; import org.json.simple.parser.JSONParser; JSONParser parser = new JSONParser(); Object obj = parser.parse(text);
。谢谢你的提示!以上是关于在 Java 中将序列化的 JSON 对象转换回的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django 中将搜索查询结果转换为 Json 可序列化对象
JavaScript:如何将JSON对象转换成JSON字符串呢
如何在 Flutter 中将 JSON 转换为对象? [关闭]
如何在 Unity3D 中将类对象转换为 JSON 字符串?