Всем привет,
Пытаюсь создать typeadapter для своего класса следующим образом:
public class AssetSerializer extends TypeAdapter<List<Asset>> {
@Override
public void write(JsonWriter out, List<Asset> value) throws IOException {
out.beginArray();
for (Asset asset : value) {
out.beginObject();
out.name("name").value(asset.getName());
out.name("code").value(asset.getCode());
out.endObject();
}
out.endArray();
}
@Override
public List<Asset> read(JsonReader in) throws IOException {
String temp_name = "";
String temp_code = "";
List<Asset> list = new LinkedList<>();
in.beginArray();
while (in.hasNext()) {
switch (in.peek()) {
case BEGIN_OBJECT:
in.beginObject();
while (in.hasNext()) {
switch (in.nextName()) {
case "name":
temp_name = in.nextString();
continue;
case "code":
temp_code = in.nextString();
continue;
}
}
in.endObject();
Asset temp_asset = new Asset(temp_name, temp_code);
list.add(temp_asset);
continue;
}
}
in.endArray();
return list;
}
В следующем коде я пытаюсь сериализовать лист Asset'ов.
Asset asset1 = new Asset("Asset1", "code_1");
Asset asset2 = new Asset("Asset2", "code_2");
LinkedList<Asset> temp_list = new LinkedList<Asset>();
temp_list.add(asset1);
temp_list.add(asset2);
Type assetsType = new TypeToken<List<Asset>>(){}.getType();
Gson gson = new GsonBuilder()
.setPrettyPrinting()
.registerTypeAdapter(assetsType, new AssetSerializer())
.create();
String json = gson.toJson(temp_list);
При этом Gson не вызывает мой класс, а использует свои стандартные методы для сериализации.
Виртуальный выделенный сервер (VDS) становится отличным выбором
ЗдравствуйтеНикак не могу понять, почему при следующем коде фор по два прохода за раз делает, когда я ожидаю один проход?
Как создать в конструкторе объекта счётчик, который будет вписывать в поле объекта номер его создания? То есть первый объект имеет номер...