来自JSON Post Request的JSON Post响应

时间:2017-07-24 08:44:39

标签: java json rest post

我创建了一个REST Web服务,它给了我 '获得JSON响应' as:

 {
        "payload": {
            "RFID": "E2005180040F003122202E5F",
            "chassisNumber": "4654689761",
            "vehicleNumber": "TN 01 1991"
        },
        "success": "true"
    }

现在我想要帖子回复来自下面的帖子请求:

Vehicle tag Request
{
  "vehicle_no": "TN07B0054"
 }

我已经创建了post方法,但它将整个事情作为参数。

如何将车辆参数作为" TN07B0054"仅来自车辆标签请求。

以下是我提供上述车辆标记请求时的POST响应:

{
    "payload": {
        "vehicleNumber": "\"vehicle_no\": \"TN 07 B 0054\""
    },
    "success": "false"
}

2 个答案:

答案 0 :(得分:0)

您可以创建名为 VehicleTagRequest

的实体
public class VehicleTagRequest {
    private String vehicle_no;

    public String getVehicle_no() {
        return vehicle_no;
    }

    public void setVehicle_no(String vehicle_no) {
        this.vehicle_no = vehicle_no;
    }
}

将字符串反序列化为上述java对象的最简单方法是使用 Jackson库https://github.com/FasterXML/jackson

如果您是依赖管理的 Maven ,则可以在 pom.xml 中添加如下所示的依赖项(如果您在本地维护依赖项,则不需要执行此步骤)

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.0.pr4</version>
        </dependency>

现在对您的车辆标签请求进行反序列化json

使用Jackson进行反序列化是使用ObjectMapper API完成的,如果您没有使用注释, 我在下面附上了一个示例代码片段 -

public class VehicleSerialisation {

    public static void main(String[] args) {
        String vehicle = "{\"vehicle_no\": \"TN07B0054\"}";

        ObjectMapper objectMapper = new ObjectMapper();
        VehicleTagRequest vehicleTagRequest = null;
        try {
            vehicleTagRequest = objectMapper.readValue(vehicle, VehicleTagRequest.class);
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.print(vehicleTagRequest.getVehicle_no());
    }
}

然后,您可以使用vehicleTagRequest.getVehicle_no()形成 GET JSON响应

的请求

答案 1 :(得分:0)

这是无效的Json

{
    "payload": {
        "vehicleNumber": "\"vehicle_no\": \"TN 07 B 0054\""
    },
    "success": "false"
}

没有转义字符

{
    "payload": {
        "vehicleNumber": "vehicle_no": "TN 07 B 0054"
    },
    "success": "false"
}

你可以这样使用

{
        "payload": {
            "vehicleNumber": {
          "vehicle_no": "TN 07 B 0054"
              }
        },
        "success": "false"
    }

你的POJO应该像

public class MyPojo
{
    private Payload payload;

    private String success;

    public Payload getPayload ()
    {
        return payload;
    }

    public void setPayload (Payload payload)
    {
        this.payload = payload;
    }

    public String getSuccess ()
    {
        return success;
    }

    public void setSuccess (String success)
    {
        this.success = success;
    }

    @Override
    public String toString()
    {
        return "ClassPojo [payload = "+payload+", success = "+success+"]";
    }
}