当前位置: 首页 > 知识库问答 >
问题:

JSON对象到BODY发布者

章光华
2023-03-14

我正在做一个项目,我请求一个api发布一个项目的详细信息。下面是我试图使用HttpRequest插入body itemstr的代码

 public void test(){
        newItem item = new newItem(12,12,12,21,"waiwai");
        JSONObject itemobj = new JSONObject(item);
        String itemStr = itemobj.toString();
        System.out.println(itemStr);
        HttpClient client = HttpClient.newHttpClient();
        HttpRequest request = HttpRequest.newBuilder().uri(URI.create("http://localhost:3001/postMongo")).POST(HttpRequest.BodyPublishers.ofString(itemStr)).build();

    }

这是我的newItem类

public class newItem {
    int id,wholesaleRate,SellingPrice,stock;
    String name;

    public int getStock() {
        return stock;
    }

    public void setStock(int stock) {
        this.stock = stock;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getWholesaleRate() {
        return wholesaleRate;
    }

    public void setWholesaleRate(int wholesaleRate) {
        this.wholesaleRate = wholesaleRate;
    }

    public int getSellingPrice() {
        return SellingPrice;
    }

    public void setSellingPrice(int sellingPrice) {
        SellingPrice = sellingPrice;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public newItem(int id, int wholesaleRate, int sellingPrice, int stock, String name) {
        this.id = id;
        this.wholesaleRate = wholesaleRate;
        this.SellingPrice = sellingPrice;
        this.stock = stock;
        this.name = name;
    }
}

我试图将itemStr作为一个主体发布到本地运行的restful API。我可以使用GET请求检索,但不能发布。

共有2个答案

伍嘉
2023-03-14

我建议使用GSON

UserEntity user = new UserEntity();
user.setUserName("UserName");
user.setUserAge(18);

Gson gson = new Gson();
String jsonStr = gson.toJson(user);

请参考这篇文章将您的对象转换为JSON:将Java对象转换为JSON与杰克逊

董俊
2023-03-14

OpenJDK发布了一个连接新的Java11 HTTP客户端和Jackson:http://openjdk.java.net/groups/net/httpclient/recipes.html#jsonPost的方法

ObjectMapper objectMapper = new ObjectMapper();
String requestBody = objectMapper
      .writerWithDefaultPrettyPrinter()
      .writeValueAsString(map);

HttpRequest request = HttpRequest.newBuilder(uri)
      .header("Content-Type", "application/json")
      .POST(BodyPublishers.ofString(requestBody))
      .build();

return HttpClient.newHttpClient()
      .sendAsync(request, BodyHandlers.ofString())
      .thenApply(HttpResponse::statusCode)
      .thenAccept(System.out::println);

希望Jackson能很快实现BodyPublisher本身,而不必先序列化为字符串。。。

 类似资料:
  • 问题内容: 我正在使用Symfony 2开发一个项目,我已经建立了一个捆绑包来处理我的所有数据库服务,这些服务来回传递JSON数据。 我的问题/问题: 是否可以发布简单的JSON对象?目前,我通过给对象起一个名字来欺骗我的ajax调用的普通表单帖子,如果我不给它起一个名字,我似乎无法从Symfony请求对象中获取数据。 我希望能够使用一个服务包来处理来自AJAX调用或常规Symfony形式的数据。

  • 问题内容: 我正在尝试将JSON发布到WCF服务。json对象包含一个数组。我想知道如何正确绑定到我的数据合同。如果有人可以在这里给我指点,我将不胜感激。目前,我的购物车对象为null 我的服务界面如下所示: 我的客户电话如下 客户电话 我的JSON看起来像这样 问题答案: Fiddler对WCF REST方法的原始请求应如下所示: JSON中的响应如下所示:

  • 问题内容: 我创建了一个需要发布到jersey的json,这是由grizzly运行的具有REST网络服务的服务器获取需要输出的传入json对象。我正在尝试,但不确定如何正确实施。 我有一个在加载时运行此方法的html文件 问题答案: 要将json发送到服务器,首先必须创建json 这就是构造ajax请求以将json作为post var发送的方式。 json现在将在post var中。

  • 问题内容: 我正在尝试使用RestSharp发布以下JSON: 我想我已经接近了,但是我似乎在为 SecurityQuestion 苦苦挣扎(API抛出错误,表明缺少参数,但没有说明是哪个参数) 这是我到目前为止的代码: 我的安全问题类如下所示: 谁能告诉我我在做什么错?还有其他方法可以发布安全性问题对象吗? 非常感谢。 问题答案: 您需要在标题中指定content-type: 还根据方法添加到P

  • 问题内容: 我如何/可以将json对象传递给webapi控制器(POST),并且 没有 类可将其映射到,而是将其作为任意内容来处理? 因此,如果我像这样从客户那里传递消息: 数据是这样的: 我的控制器将能够解析吗?下次数据可能与该签名不匹配(例如: 在我的控制器中,我尝试过: 和: 和(因为这实际上是与mongo数据库一起使用): 但是看起来对象映射器想要映射到字符串以外的其他东西… 问题答案:

  • 我有一个Java动态web项目(部署在本地应用服务器Tomcat 7上),它使用Jersey创建REST API。 我不使用任何构建自动化工具(所以我的库被添加到构建路径中,servlet被插入到web.xml文件中)。 我正在使用的库包括: 我的web.xml如下: 应用程序正在与MySQL数据库交互。场景如下:数据库包含一个名为user的用户帐户表。列是id、name、username和密码。