简体   繁体   English

Java如何更新JSON对象值并将其作为正文发送到PUT请求

[英]Java how to update a JSON object value and send it as a body to PUT request

I am trying to automate my REST service's PUT request and I am completely new to JAva. 我正在尝试自动执行我的REST服务的PUT请求,而我对JAva完全陌生。 Here I am passing a PUT body(in JSON format) along with other headers. 在这里,我将传递一个PUT主体(JSON格式)以及其他标头。 I had created a Java class for PUT in which I have getters and setters and I am assigning values using setter and creating my PUT body and sending this PUT body in my PUT request. 我为PUT创建了一个Java类,其中有getter和setter,并且正在使用setter分配值并创建我的PUT主体,并在我的PUT请求中发送此PUT主体。 My PUT body is something like this . 我的PUT身体就是这样。 I am able to update "id" and "name" and create my body object but I am not sure how do I update the "versionname" and"number" under "versions" path? 我可以更新“ id”和“ name”并创建我的body对象,但是我不确定如何在“ versions”路径下更新“ versionname”和“ number”?

{
    "versions": [
        {
            "versionname": "Test",
            "number": 1

        }
    ],
    "id": 89960004,
    "name": "TEST CES LIST4",


}

The class for PUT body is as below: PUT主体的类别如下:


public class putBody {

public String id;
public String name;
public String versionName;
public String number;


public String getId() {
    return id;
}

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

public String getversionName() {
    return versionName;
}

public void setversionName(String versionName) {
    this.versionName = versionName;
}

My question is how to update the "versionname" and "number" and create my putBody object. 我的问题是如何更新“版本名称”和“数字”并创建我的putBody对象。 Any help much appreciated. 任何帮助,不胜感激。

First, your PutBody class must have a collection to keep your version data, according to the JSON output that you provided. 首先,根据您提供的JSON输出,您的PutBody类必须具有一个集合来保留您的版本数据。

For this purpose, just create a Version class that will be used for every single version information: 为此,只需创建一个Version类,该类将用于每个单个版本信息:

public class Version {

    public String versionName;
    public String number;

    public String getVersionName() {
        return versionName;
    }

    public void setVersionName(String versionName) {
        this.versionName = versionName;
    }

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

}

Then, here is your PutBody class should be look like 然后,这是您的PutBody类,应该像

public class PutBody {

    public String id;
    public String name;
    public List<Version> versions;

    public String getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public List<Version> getVersions() {
        return versions;
    }

    public void setVersions(List<Version> versions) {
        this.versions = versions;
    }

}

And here is how to fill it with data according to your example values : 以下是根据示例值用数据填充数据的方法:

List<Version> versions = new ArrayList<Version>();
    Version version = new Version();
    version.setVersionName("Test");
    version.setNumber("1");
    versions.add(version);

    PutBody putBody = new PutBody();

    putBody.setName("TEST CES LIST4");
    putBody.setId("89960004");
    putBody.setVersions(versions);

And the JSON Output : 和JSON输出:

{
  "id": "89960004",
  "name": "TEST CES LIST4",
  "versions": [
    {
      "versionName": "Test",
      "number": "1"
    }
  ]
}

UPDATE 更新

Google's Gson has great features for this purpose. Google的Gson为此目的提供了强大的功能。 You can easily convert Java instances to JSON and convert JSON strings back to Java instances. 您可以轻松地将Java实例转换为JSON,并将JSON字符串转换回Java实例。

Please check that 请检查一下

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM