Montag, Januar 27, 2020

@RequestBody ist immer null-Werte

Habe ich einen einfachen REST-service (POST). Aber wenn ich den Dienst von postman @RequestBody ist nicht erhalten, keine Werte.

import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

@RestController
public class Add_Policy {
    @ResponseBody
    @RequestMapping(value = "/Add_Policy", headers = {
            "content-type=application/json" }, consumes = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
    public Policy GetIPCountry( @RequestBody Policy policy) {

        System.out.println("Check value: " + policy.getPolicyNumber());
        return policy;

    }


}

Meine java-Bean-Objekt wird wie unten:

public class Policy {
    private String PolicyNumber;
    private String Type;
    private String Tenture;
    private String SDate;
    private String HName;
    private String Age;

    public String getPolicyNumber() {
        return PolicyNumber;
    }

    public void setPolicyNumber(String policyNumber) {
        PolicyNumber = policyNumber;
    }

    public String getType() {
        return Type;
    }

    public void setType(String type) {
        Type = type;
    }

    public String getTenture() {
        return Tenture;
    }

System.aus.println druckt eine null als Wert für PolicyNumber.

Bitte helfen Sie mir dieses Problem zu beheben.

JSON, die ich leite im request-body

{
    "PolicyNumber": "123",
    "Type": "Test",
    "Tenture": "10",
    "SDate": "10-July-2016",
    "HName": "Test User",
    "Age": "10"
}

Habe ich sogar Content-Type zu application/json im Postbote

  • Gelten @ResponseBody an die Ausgabe der Methode, nicht die Methode selbst. Auch gehören die produces header-Wert, wenn Sie erwarten, dass JSON-Wert.
  • Auch wenn ich die Antwort als ungültig Werten aus der Anforderung ist gleich null
  • policy selbst war nicht null, sind Sie sicher, dass es enthält policyNumber ?
  • Alle Werte in der Policy Objekt wird wieder als null. Ich habe eine tostring() Methode policy bean und überprüft diese.
  • könnten Sie bitte zeigen Sie uns Ihre json-Anfrage?
  • Versuchen Sie, die ersten Zeichen die Eigenschaften in Ihrer JSON-in Kleinbuchstaben. ZB. { „policyNumber“: „123“, „type“: „Test“, „tentur“: „10“, „sDate“: „10-Juli-2016“, „: hName“: „Test User“, „Alter“: „10“ }
  • Danke @AmanSinghal es funktionierte.. ich geändert alle Tasten‘ Buchstaben in Kleinbuchstaben um. auch HName zu hname. Aber wirklich dint verstanden, dass dieses Verhalten der Feder.
  • Sie Folgen müssen, camel-case-Konvention, name der Einstellung aller Eigenschaften in JSON nicht helfen würde.

InformationsquelleAutor Geek | 2016-08-13

2 Kommentare

  1. 26

    Versuchen Sie, die ersten Zeichen die Eigenschaften in Ihrer JSON-in Kleinbuchstaben. ZB.

    {
        "policyNumber": "123",
        "type": "Test",
        "tenture": "10",
        "sDate": "10-July-2016",
        "hName": "Test User",
        "age": "10"
    }

    Grundsätzlich Spring nutzt getter und setter, um die Eigenschaften der bean-Objekt. Und es nimmt die Eigenschaft des JSON-Objekt, gleicht Sie mit der setter mit dem gleichen Namen. zB um die policyNumber Eigenschaft, die es versucht zu finden, ein setter mit dem Namen setpolicyNumber() in der bean-Klasse und verwenden, um den Wert Ihrer bean-Objekt.

    • Dieser funktioniert. Dank
  2. 2

    Java-Konvention verlangt den Namen der variable in ein POJO (Attribut einer Klasse) muss das erste Zeichen in Kleinbuchstaben.

    Haben Sie Großbuchstaben in deinem JSON-Eigenschaften, was den Fehler verursacht.

Kostenlose Online-Tests