Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Работа с JSON Java  [new]
skyboyy
Member

Откуда:
Сообщений: 61
Всем привет я вот изучаю JSON

И у меня есть такой контроллер. Который отправляет на сервер пять слов и возвращает их в обратном порядке.

@PostMapping("/reverse")
    public List<String> reverseList(@RequestBody List<String> stringList) {
        return IntStream.range(0, stringList.size())
                .mapToObj(i -> stringList.get(stringList.size() - 1 - i))
                .collect(Collectors.toList());
    }



Когда я в терминале ввожу
curl -H "Content-Type: application/json" -d "[\"One\",\"Two\",\"Three\",\"Four\",\"Five\"]" localhost:8080/hello/reverse


Он у меня возвращает
["Five","Four","Three","Two","One"]


Но как можно сделать так, чтобы он у меня читал текст в любом формате. Допустим если напишу
"5+6+8+9+10"

То как сделать так чтобы он у меня все посчитал и вывел ответ
24 окт 19, 12:17    [22001553]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2446
skyboyy,
В json, xml в общем случае нет очередности и номер по порядку.
В базе тоже нет. Заводят спец поле. И ты его добавь.
24 окт 19, 12:22    [22001564]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
skyboyy
Member

Откуда:
Сообщений: 61
PetroNotC Sharp,

Мне сказали, чтобы просто сделать так чтобы он читал текст в любом формате, допустим для примера если я напишу (5+6+8) он мне должен вернуть ответ, типа сколько будет их прибавление. Просто мне сказали формат который я написал неудобен, надо по универсальному написать. Можете помочь
24 окт 19, 12:27    [22001575]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2446
skyboyy,
Я пока задачу не понял.
Причем очередность при сложении?
24 окт 19, 12:29    [22001578]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
skyboyy
Member

Откуда:
Сообщений: 61
PetroNotC Sharp,

Допустим я же сначала написал ["Five","Four","Three","Two","One"], чтобы его JSON вывел в обратном порядке. Мне сказали так неудобно будет каждый раз писать, надо что-то универсальное написать. Допустим убрать скобочки, слэши и тд чтобы просто цифры были или слова без скобочек и слэшей
24 окт 19, 12:35    [22001587]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2446
skyboyy,
Математика, 1 класс вторая четверть:
ДАНО:
- числа в json
НАЙТИ:
- их сумму в сервлете
Так?
24 окт 19, 12:41    [22001595]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
skyboyy
Member

Откуда:
Сообщений: 61
PetroNotC Sharp,

просто надо так написать чтобы этот код работал без скобок и слэшей

curl -H "Content-Type: application/json" -d "[\"One\",\"Two\",\"Three\",\"Four\",\"Five\"]" localhost:8080/hello/reverse
24 окт 19, 12:42    [22001598]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
Partisan M
Member

Откуда:
Сообщений: 1378
Вопрос не имеет никакого отношения ни к Java, ни к JSON, так как в приведённом примере дана командная строка программы CURL. Какие в ней требования к командной строке - см. в описании CURL. В ней можно передавать данные и не в командной строке, а в файле. Но это не относится к теме Java. В Java можно сделать то же, что и в этой команде CURL. Так что даже не понял, что вы хотели выразить с помощью CURL.
24 окт 19, 13:24    [22001630]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2446
skyboyy
json" -d "[3, 5,1,6]" localhost

Так?
24 окт 19, 13:29    [22001634]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
chpasha
Member

Откуда:
Сообщений: 8593
skyboyy
Мне сказали так неудобно будет каждый раз писать

если нужно передавать строго массив строк, то json действительно в данном случае вероятно overkill
можно
1) сменить POST на GET
2) тип параметра на массив строк вместо списка
3) RequestBody на RequestParam

тогда можно передавать значения либо как myParam=1&myParam=3&myParam=5 либо как myParam=1,3,5,6

либо нужно свой конвертер написать, который будет принимать параметры в любом удобном виде и конвертить в нужный тип, но стоит ли?
24 окт 19, 13:30    [22001636]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
skyboyy
Member

Откуда:
Сообщений: 61
chpasha,
Я только додумался вот так написать
@RestController
@RequestMapping("/hello")
public class HelloController {
 
    private final NamesDAO namesDAO;
 
    public HelloController(NamesDAO namesDAO) {
        this.namesDAO = namesDAO;
    }
 
 
    
    
    @PostMapping("/reverse")
    public List<String> reverseList(@RequestBody String string) {
        List<String> stringList = Arrays.asList(string.split("+"));
        return IntStream.range(0, stringList.size())
                .mapToObj(i -> stringList.get(stringList.size() - 1 - i))
                .collect(Collectors.toList());
    }
 
 
 
}



Как можно написать так чтобы допустим эти [] скобочки убрать, чтобы просто было
 curl -H "Content-Type: application/json" -d  и вот здесь текста


curl -H "Content-Type: application/json" -d '["text":"One+Two+Three+Four+Five"]' localhost:8080/hello/reverse
24 окт 19, 13:33    [22001640]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2446
Нда... Тяжело понять конечную цель автора)
24 окт 19, 13:45    [22001654]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
chpasha
Member

Откуда:
Сообщений: 8593
skyboyy
Я только додумался вот так написать

чувак, я для кого предыдущий пост писал? так все, в сад. надоели бараны
24 окт 19, 13:55    [22001671]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
skyboyy
Member

Откуда:
Сообщений: 61
PetroNotC Sharp,

Сейчас попытаюсь более детально обьяснить) просто то что я написал ранее это неправильно. Мне сказали просто написать код, где команду cURL

curl -H "Content-Type: application/json" -d "[\"One\",\"Two\",\"Three\",\"Four\",\"Five\"]" localhost:8080/hello/reverse


Нужно написать, дабы оно было универсальное и удобное, чтобы не использовать скобки и слэши как здесь
 -d "[\"One\",\"Two\",\"Three\",\"Four\",\"Five\"]
24 окт 19, 13:57    [22001673]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2446
skyboyy,
))) что передать надо в reverse?
24 окт 19, 14:14    [22001703]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2446
skyboyy
One-Two-Three
так?
))))
24 окт 19, 14:17    [22001704]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2446
skyboyy,
Напиши без скобок как хотят и скажи ошибку которая будет.
24 окт 19, 14:19    [22001706]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
skyboyy
Member

Откуда:
Сообщений: 61
PetroNotC Sharp,
Все я уточнил
Чтобы допустим если я введу

curl -H "Content-Type: application/json" -d "один, два, три, четыре, пять" localhost:8080/hello/reverse


Он вернул его в обратном порядке. Как вы заметили без [] надо

Плюс сказали чтобы он умел обрабатывать его в любом формате типа даже если я напишу "5+6+7+8" тоже обработал.
24 окт 19, 14:33    [22001734]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
Partisan M
Member

Откуда:
Сообщений: 1378
skyboyy,
всего то и надо поместить аргумент в одиночные кавычки, а не двойные. Тогда \ не понадобится. Вообще-то, об этом можно было узнать в руководстве по CURL.
24 окт 19, 14:40    [22001747]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2446
skyboyy
даже если я напишу "5+6+7+8" тоже обработал.
и суммировал? Или реверсировал reverse?
24 окт 19, 14:45    [22001755]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2446
Partisan M
skyboyy,
всего то и надо поместить аргумент в одиночные кавычки, а не двойные. Тогда \ не понадобится. Вообще-то, об этом можно было узнать в руководстве по CURL.
им скобки тоже не нравятся. Тогда тип контента надо менять.
24 окт 19, 14:47    [22001756]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2446
skyboyy
List<String> stringList = Arrays.asList(string.split("+"));
json тут вообще ни при чем)
24 окт 19, 14:49    [22001759]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
skyboyy
Member

Откуда:
Сообщений: 61
PetroNotC Sharp,

Сказали можно суммировать, а можно просто вывести наоборот. Важно чтобы был JSON + чтобы он любой формат текста читал
24 окт 19, 14:52    [22001764]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 2446
skyboyy
Важно чтобы был JSON
скажи им что json это скобки бязательнт и запятые. Иначе это не json.
24 окт 19, 15:02    [22001779]     Ответить | Цитировать Сообщить модератору
 Re: Работа с JSON Java  [new]
msLex
Member

Откуда:
Сообщений: 6959
PetroNotC Sharp
skyboyy,
В json в общем случае нет очередности и номер по порядку.


Справедливости ради, в JSON-массивах порядок есть

https://www.json.org/
An array is an ordered collection of values.
24 окт 19, 15:54    [22001836]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Java Ответить