Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Gson在java中解析JSON_Java_Json - Fatal编程技术网

使用Gson在java中解析JSON

使用Gson在java中解析JSON,java,json,Java,Json,我正在尝试运行一个简单的HTTP服务器,我将向它发送一个请求,其中包含JSON字符串,我需要从中提取数据。我是Java新手,在这方面有困难。我在网上搜索过,大多数例子对我都不适用,所以我肯定是做错了什么 public class shareManagerServer { public static void main(String[] args) throws IOException { HttpServer server = HttpServer.create(new

我正在尝试运行一个简单的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信息的对象?要测试im发送此卷曲,请执行以下操作:

curl -X POST -d "{'age':26,'email':'norman@futurestud.io','isDeveloper':true,'name':'Norman'}" localhost:8500/shareWithUser
编辑:

从我的utils:

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
    }
}
公共类utils{
公共静态字符串readString(InputStream InputStream)引发IOException{
ByteArrayOutputStream into=新建ByteArrayOutputStream();
字节[]buf=新字节[4096];
对于(int n;0<(n=inputStream.read(buf));){
写入(buf,0,n);
}
into.close();
返回新字符串(进入.toByteArray(),“UTF-8”);//或任何编码
}
}

首先,您可以创建具有所有属性的类

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);

首先,您可以创建具有所有属性的类

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);

请发布您尝试过的内容以及您遇到的问题。您能否显示更多代码这是什么
utils
,以及您使用哪个库来反序列化json?新建JSONObject(body)如何?标题太差了。重写以总结您的具体技术问题。@Deadpool添加了它!请发布您尝试过的内容以及您遇到的问题。您能否显示更多代码这是什么
utils
,以及您使用哪个库来反序列化json?新建JSONObject(body)如何?标题太差了。重写以总结您的具体技术问题。@Deadpool添加了它!啊,好吧,我知道我要在这里做什么了!谢谢我是Java新手!啊,好吧,我知道我要在这里做什么了!谢谢我是Java新手!