我正在尝试运行一个简单的 HTTP 服务器,我将向该服务器发送一个请求,其中包含正文中的 JSON 字符串,并且我需要从中提取数据。我是 Java 新手,很难做到这一点。我在网上搜索过,大多数示例都不适合我,所以一定是我做错了什么。
public class shareManagerServer {
public static void main(String[] args) throws IOException {
HttpServer server = HttpServer.create(new InetSocketAddress(8500), 0);
HttpContext context = server.createContext("/shareWithUser");
context.setHandler(shareManagerServer::handleshareWithUserRequest);
server.start();
}
private static void handleshareWithUserRequest(HttpExchange exchange) throws IOException {
if (exchange.getRequestMethod().equalsIgnoreCase("POST")) {
Headers requestHeaders = exchange.getRequestHeaders();
// Request body
String body = utils.readString(exchange.getRequestBody());
}
}
}
基于此,我如何将其获取到可以访问 JSON 信息的对象?为了测试我发送这个 curl :
curl -X POST -d "{'age':26,'email':'norman@futurestud.io','isDeveloper':true,'name':'Norman'}" localhost:8500/shareWithUser
编辑:
来 self 的实用程序:
public class utils {
public static String readString(InputStream inputStream) throws IOException {
ByteArrayOutputStream into = new ByteArrayOutputStream();
byte[] buf = new byte[4096];
for (int n; 0 < (n = inputStream.read(buf));) {
into.write(buf, 0, n);
}
into.close();
return new String(into.toByteArray(), "UTF-8"); // Or whatever encoding
}
}
最佳答案
首先,您可以创建具有所有属性的类
public class Person {
private int age;
private String email;
private boolean isDeveloper;
private String name;
//getters and setters
}
现在使用 Gson
可以很好地实现字符串转发
String body = utils.readString(exchange.getRequestBody());
Gson gson = new Gson();
Person person = gson.fromJson(body, Person.class);
关于java - 使用Gson在java中解析JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58045115/