Как я могу получить индексы json в качестве ключей?

Пользователь API отправляет JSON следующим образом:

{ "0": "3♥", "1": "5♣", "2": "4♣",“3”: “9♥”, … }

я пытаюсь сохранить значение каждого индекса (3 ♥, 5 ♣, 4 ♣, 9 ♥) в списке.

все, что у меня есть сейчас, это метод POST, но я не знаю, как его читать) ИЛИ я не знаю, нужно ли мне использовать другой тип запроса

 @RequestMapping(value="/start", method = RequestMethod.POST, consumes= "application/json" )
public String getData(@RequestBody ?? ) { }

заранее спасибо

Привет Алехандра, добро пожаловать в Stackoverflow. Чтобы вы могли получить ответ, я предлагаю вам отредактировать свой вопрос, чтобы уточнить, что именно вы спрашиваете. Как это в настоящее время написано, я не могу помочь. Возможно, добавьте некоторый код, так как без него он довольно открытый!

DanielJ 23.04.2022 10:31

хорошо, спасибо, я отредактировал это!! :)

Ale 23.04.2022 11:06

@Ale, к сожалению, редактирование не помогает. Постарайтесь объяснить, чего вы хотите достичь, как можно яснее

Rohit Babu 23.04.2022 11:08

Вы хотите { "0": "3♥", "1": "5♣", "2": "4♣",“3”: “9♥”, … } в качестве ответа, когда срабатывает запрос /start POST? Вы разрабатываете конечную точку API?

Rohit Babu 23.04.2022 11:10

нет наоборот! json - это пользовательский ввод, а вывод - это список, да, это API, я использую springboot и java (извините за отсутствие ясности, это языковой барьер)

Ale 23.04.2022 11:20
Основы программирования на Java
Основы программирования на Java
Java - это высокоуровневый объектно-ориентированный язык программирования, основанный на классах.
Концепции JavaScript, которые вы должны знать как JS программист!
Концепции JavaScript, которые вы должны знать как JS программист!
JavaScript (Js) - это язык программирования, объединяющий HTML и CSS с одной из основных технологий Всемирной паутины. Более 97% веб-сайтов используют...
1
5
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Попробуйте ниже

   @RequestMapping(value="/start", method = RequestMethod.POST, consumes= "application/json" )
    public String getData(@RequestBody HashMap<String, String> data) {
        List<String> result = new ArrayList<>();

        for (String val: data.values()){
        result.add(val);
        }
     }

Мы сохраняем пользовательский ввод в HashMap, а затем извлекаем его значения в цикле for. Конечно, вы можете собрать данные, возвращенные data.values(), в ArrayList или любую другую коллекцию по вашему выбору, чтобы избежать цикла for.

Вы можете использовать EntrySet, если вам нужны и key, и value, как показано ниже.

for (Map.Entry<String, String> entry : data.entrySet()) {
    String key = entry.getKey();
    String value = entry.getValue();
    // ...
}

Попробуй это:

  @PostMapping("/saveData")
  public ResponseEntity<String> saveData(@RequestBody Map<Integer, Object> data) {
    List<Object> values = new ArrayList<>();
    data.forEach(values::add);

    //Additonal code here, e.g. save

    return ResponseEntity.ok().build();
  }

@RequestBody Map<Integer, Object> гарантирует, что индексы всегда будут целыми числами. Тип значения можно изменить на String. Если индексы не являются целыми, будет возвращено 400 Bad Request. Индексы должны быть целыми положительными числами.

Вы также можете использовать более длинную нотацию для добавления элементов в список (может быть более понятной): data.forEach((key, value) -> values.add(key, value));


For this payload:
{
    "0": "3♥",
    "1": "5♣",
    "2": "4♣",
    "3": "9♥"
}

Это результат:

enter image description here

СПАСИБО! Я не думал о целых числах! это хорошо, я буду стараться

Ale 23.04.2022 12:02

Другие вопросы по теме