почему вы не видите «ключи» в json? - PullRequest
1 голос
/ 16 января 2020

при входе в почтальон я получаю json, но без его "ключей" почему? Может быть, я делаю ошибку, и я не заметил. Некоторая помощь, пожалуйста.

Я использую хранимую процедуру, чтобы иметь возможность сделать грубый.

Это json, который показывает мне почтальона. Показывает мне без его "ключа"

{
    "data": [
        [
            1,
            "aaa",
            "aaa@gmail.com"
        ],
        [
            2,
            "bbb",
            "bbb@gmail.com"
        ],
        [
            3,
            "ccc",
            "ccc@gmail.com"
        ]
    ]
}

Я хотел бы получить что-то вроде этого.

{
    "data": [
        {
          userCod: 1,
          userName: "aaa",
          userEmail: "aaa@gmail.com"
        },
        {
          userCod: 2,
          userName: "bbb",
          userEmail: "bbb@gmail.com"
        },
        {
          userCod: 3,
          userName: "ccc",
          userEmail: "ccc@gmail.com"
        }
    ]
}

Я оставляю код

public class ApiResponse {
    private List<UserTest> data;

    public List<UserTest> getData() {
        return data;
    }

    public void setData(List<UserTest> data) {
        this.data = data;
    }

}
@Entity
@Table(name = "tbUsers")
public class UserTest implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "userCod")
    private Long id;
    @Column(name = "userName")
    private String name;
    @Column(name = "userEmail")
    private String email;

    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

}
@Repository
public class ClienteDaoImpl implements IClienteDao{

    @Autowired
    private EntityManager em;

    @SuppressWarnings("unchecked")
    @Override
    public ApiResponse mntUsers(int op) {
        ApiResponse api = new ApiResponse();
        Session session = em.unwrap(Session.class);
        ProcedureCall call = session.createStoredProcedureCall("sp_MntUser");
        call.registerParameter(1, Integer.class, ParameterMode.IN);
        call.setParameter(1, op);
        call.execute();
        api.setData(call.getResultList());
        return api;
    }

}
@RestController
@RequestMapping(value = "/mntUsers")
public class ClienteController {

    @Autowired
    private ClienteServiceImpl serviceImpl;

    @RequestMapping(method = RequestMethod.POST)
    public ResponseEntity<?> CrudUsers(@RequestParam(value = "option", required = true) Integer op) {
        return new ResponseEntity<>(serviceImpl.mntUsers(op),HttpStatus.OK);
    }

}

1 Ответ

0 голосов
/ 16 января 2020

Создайте метод с именем getCollectionType

public static <T, C extends Collection<T>> C getCollectionType(Iterable<?> from, C to, Class<T> listClass) {
    for (Object item: from) {
        to.add(listClass.cast(item));
    }
    return to;
}

Затем используйте его в следующей строке:

api.setData(getCollectionType(call.getResultList(), 
                              new ArrayList<UserTest>(), 
                              UserTest.class));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...