【发布时间】:2021-05-18 20:14:06
【问题描述】:
我正在为担保开发一个休息 api,当我想添加一个新产品时我发送一个 JSON,这是结构:
{
"Poliza": {
"Cliente": "CLI-00012",
"pago": "1",
"fechaContratacion": "2021-04-26",
"vigencia": "2022-04-26",
"totalCubierto": "string",
"numeroContrato": "string",
"terminos": "string",
"prepoliza": "string"
},
"empresa_id": "uno",
"id_ticket": "string",
"nombre": "string",
"descripcion": "string",
"ruta_codigo_qr": "string",
"ruta_imagen": "string",
"fecha_registro": "2021-04-26"
}
但是当我想获取 de Cliente 字段时,出现错误“值为空”
这是我的映射类:
@Autowired
ProductosController productosController;
@PostMapping(
path = "/nuevo",
consumes = "application/json",
produces = "application/json")
public ResponseEntity<?>agregarProducto(@RequestBody ProductoInput producto )throws ProductoException{
Producto prod = productosController.registraProducto(producto);
ResponseEntity<Producto> response = new ResponseEntity<Producto>(prod, HttpStatus.OK);
return response;
}
这是控制器类:
@Controller
@Transactional
public class ProductosController {
@Autowired
ProductoRepository productoRepository;
@Autowired
PolizaRepository polizaRepository;
public Producto registraProducto(ProductoInput producto) throws ProductoException{
Poliza poliza = new Poliza();
poliza.setCliente(producto.getPoliza().getCliente());//Here appears de error
polizaRepository.save(poliza);
poliza.setCliente(producto.getDescripcion());
Producto prod = new Producto();
//prod.setPoliza_id(producto.getPoliza().getId());
prod.setCliente_id(producto.getPoliza().getCliente());
prod.setEmpresa_id(producto.getEmpresa_id());
prod.setId_ticket(producto.getId_ticket());
prod.setNombre(producto.getNombre());
prod.setDescripcion(producto.getDescripcion());
prod.setRuta_codigo_qr(producto.getRuta_codigo_qr());
prod.setRuta_imagen(producto.getRuta_imagen());
prod.setFecha_registro(producto.getFecha_registro());
Producto newProducto = productoRepository.save(prod);
return newProducto;
}
这是 ProductoInputClass:
public class ProductoInput {
private PolizaInput poliza;
private String cliente_id;
private String poliza_id;
private String empresa_id;
private String id_ticket;
private String nombre;
private String descripcion;
private String ruta_codigo_qr;
private String ruta_imagen;
private Date fecha_registro;
//getters and setters
}
这是 PolizaIput 类
public class PolizaInput {
private String id;
private String cliente;
private String pago;
private Date fechaContratacion;
private Date vigencia;
private String estatusPago;
private float totalCubierto;
private String numeroContrato;
private String terminos;
private String prepoliza;
//Getters and setters
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("Poliza [id =");
builder.append("id, Cliente =");
builder.append("cliente, pago =");
builder.append("pago, fechaContratacion =");
builder.append("fechaContratacion, vigencia =");
builder.append("vigencia, totalCubierto =");
builder.append("totalCubierto, numeroContrato =");
builder.append("numeroContrato, terminos =");
builder.append("terminos, prepoliza =");
builder.append("prepoliza");
builder.append("]");
return builder.toString();
}
}
那么,如何从发送的 JSON 中访问 Poliza 字段?
【问题讨论】:
标签: java json spring-boot