Вы можете использовать аннотацию SerializedName
, которая позволяет определить имя поля, отличное от имени свойства в файле Java
. Ниже вы можете увидеть пример того, как десериализовать вашу JSON
полезную нагрузку до Java
модель:
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.SerializedName;
import java.io.File;
import java.io.FileReader;
import java.util.List;
public class GsonApp {
public static void main(String[] args) throws Exception {
File jsonFile = new File("./resource/test.json").getAbsoluteFile();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
Root root = gson.fromJson(new FileReader(jsonFile), Root.class);
System.out.println(root);
}
}
class Root {
@SerializedName("total_count")
private int totalCount;
private List<Entry> entries;
// getters, setters, toString
}
class Entry {
private String id;
@SerializedName("2")
private String two;
@SerializedName("3")
private String three;
// getters, setters, toString
}
Над отпечатками кодов:
Root{totalCount=16, entries=[Entry{id='2009131', two='1788', three='Yes'}, Entry{id='1381', two='956', three='No'}]}
Если ваш JSON
является динамическим и может иметь больше / меньше клавиш, вы можете десериализовать его до Map<String, String>
:
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.SerializedName;
import java.io.File;
import java.io.FileReader;
import java.util.List;
import java.util.Map;
public class GsonApp {
public static void main(String[] args) throws Exception {
File jsonFile = new File("./resource/test.json").getAbsoluteFile();
Gson gson = new GsonBuilder().setPrettyPrinting().create();
Root root = gson.fromJson(new FileReader(jsonFile), Root.class);
System.out.println(root);
}
}
class Root {
@SerializedName("total_count")
private int totalCount;
private List<Map<String, String>> entries;
// getters, setters, toString
}
Над отпечатками кодов:
Root{totalCount=16, entries=[{2=1788, 3=Yes, id=2009131}, {2=956, 3=No, id=1381}]}