JSON a klasa - Spring Boot

JSON a klasa - Spring Boot
HE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 88
0

Cześć.
Pobieram takiego JSONa z zewnętrznego API za pomocą RestTemplate

Kopiuj
[
	{
		"table":"A",
		"no":"226/A/NBP/2019",
		"effectiveDate":"2019-11-22",
		"rates":
				[
					{
						"currency":"bat (Tajlandia)",
						"code":"THB",
						"mid":0.1287
					}
				]
	}
]

i nie wiem jak skonstruować klasę, która by go przechowywała (drugi argument do RestTemplate).
Czy wystarczy, że zrobię taką klasę?

Kopiuj
class Klasa
{
    String table;
    String no;
    String effectiveDate;
    String rates;
    String currency;
    String code;
    Double mid;

    //Konstruktor gettery i settery
}

No chyba, że to wymaga większego kombinowania. Chodzi mi głównie i to nieszczęsne pole "rates" w JSONie.

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
2

Nie. Jeśli chcesz mapować automatycznie, to musisz mieć pasujące klasy.

Kopiuj
class Klasa
{
    String table;
    String no;
    String effectiveDate;
    List<Rate> rates;
}

class Rate{
    String currency;
    String code;
    Double mid;
}

Przecież widać gołym okiem z tego jsona ze rates to jest lista obiektów.

Charles_Ray
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1909
2
  1. JSON jest lista obiektów, a nie obiektem - musisz mapowac na „List” (a właściwie na List<Klasa>, pogoogluj jaka jest dokładnie wtedy składnia)
  2. Mapujesz listę „rates” na stringa. Nie wiem czy Jackson Ci to przepuści, ale to i tak bez sensu, bo musiałbyś sam to parsowac. Zrób listę, a Jackson sam to opaździerzy.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.