【问题标题】:how to get information from an object inside json on springspring 如何从 json 中的对象获取信息
【发布时间】: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


    【解决方案1】:

    您可以使用 Google 的 Gson 库,它提供了两种方法 toJson()fromJson() 将 Java 对象转换为 JSON,反之亦然。 https://github.com/google/gson

    【讨论】:

    • 它没用 :( 我打印了 json 转换的对象,这是结果 {"empresa_id":"uno","id_ticket":"string","nombre":"string" ,"descripcion":"string","ruta_codigo_qr":"string","ruta_imagen":"string","fecha_registro":"abr. 25, 2021"} 它无法识别对象 Poliza :c
    【解决方案2】:

    您应该使用小写的 cliente 而不是 Cliente 字段名 您可以使用此帖子请求正文

            {
            "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"
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-18
      • 2018-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-09
      • 2012-05-18
      • 1970-01-01
      相关资源
      最近更新 更多