Нулевые значения после чтения данных из остальных API - PullRequest
0 голосов
/ 19 сентября 2019

У меня похожая проблема с этим, но я не могу решить это Получение нулевых значений при чтении в файле JSON в Eclipse с использованием Java У меня проблемы при чтении данных из этого https://runsignup.com/Rest/races?format=json&country=US

Gson gson = new GsonBuilder().setPrettyPrinting().create();
        final String racesUri = "https://runsignup.com/Rest/races?format=json&country=US";
        HttpResponse<String> response = HttpClient
                .newBuilder()
                .proxy(ProxySelector.getDefault())
                .build()
                .send(Request.requestGet(racesUri), HttpResponse.BodyHandlers.ofString());
        RaceList races = gson.fromJson(response.body(), RaceList.class);
        System.out.println(response.body());
        System.out.println(races);

Я просто хочу получить "race_id" и "name" Race class выглядит следующим образом:

package stefanowicz.kacper.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Race {
    private long race_id;
    private String name;
}

Тело Responsy прекрасно, но когда я пытаюсь преобразовать его в объект RaceList, который выглядит какthis:

package stefanowicz.kacper.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class RaceList {
    private List<Race> races;
}

И каждая раса имеет "race_id", равный 0 и "name", как ноль.

RaceList (races = [Race (race_id = 0, name = null), Race(race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name= null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name =null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0,name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race(race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name= null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name =null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id= 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null), Race (race_id = 0, name = null)])

Ответы [ 2 ]

0 голосов
/ 19 сентября 2019

Спасибо, ребята, ваши ответы привели меня, я надеюсь, к лучшему решению:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class RaceList {
    private List<Map<String, Race>> races;
}
0 голосов
/ 19 сентября 2019

Я думаю, что ваши классы должны выглядеть примерно так:

public class RaceList {
    private List<Race> races;
}

public class Race {
    private RaceData race;
}

public class RaceData {
    private long race_id;
    private String name;
    /* ... */
}

Затем к названию первой расы следует обращаться как races.getRaces().get(0).getRace().getName(), если races - это имя переменной, содержащей RaceList объект.

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