Как преобразовать массив строк в объект с помощью GSON/JSON?
У меня есть json вот так:
[
[
"Passport Number",
"NATIONALITY",
"REASONS"
],
[
"SHAIS100",
"INDIA",
""
],
[
"",
"",
"Agent ID is not matched."
],
[
"",
"",
""
]
]
Я хочу заполнить это до ArrayList<String[]>
, скажите, пожалуйста, как это сделать?
И пустые строки не должны преобразовываться как null.
Ответы
Ответ 1
Это очень просто, вам просто нужно сделать следующее:
1.- Сначала создайте объект Gson
:
Gson gson = new Gson();
2.- Получите соответствующий Type
для List<String[]>
(обратите внимание, что вы не можете сделать что-то вроде List<String[]>.class
из-за Java type стирание):
Type type = new TypeToken<List<String[]>>() {}.getType();
3.- Наконец, разобьем JSON в структуру типа Type
:
List<String[]> yourList = gson.fromJson(yourJsonString, type);
Ответ 2
Посмотрите Gson docs
Gson gson = new Gson();
int[] ints = {1, 2, 3, 4, 5};
String[] strings = {"abc", "def", "ghi"};
(Serialization)
gson.toJson(ints); ==> prints [1,2,3,4,5]
gson.toJson(strings); ==> prints ["abc", "def", "ghi"]
(Deserialization)
int[] ints2 = gson.fromJson("[1,2,3,4,5]", int[].class);
==> ints2 will be same as ints
Это важно для вас: мы также поддерживаем многомерные массивы с произвольно сложными типами элементов
Для объектов null
Gson
по умолчанию не будет преобразован как null. Ссылка
Но вы можете настроить сканирование этих атрибутов nulls
, если вы хотите сделать это после.
Поведение по умолчанию, которое реализовано в Gson
, заключается в том, что поля нулевого объекта игнорируются. Это позволяет использовать более компактный выходной формат; однако клиент должен определить значение по умолчанию для этих полей, так как формат JSON
преобразуется обратно в его Java.
Здесь вы можете настроить экземпляр Gson
для вывода null:
Gson gson = new GsonBuilder().serializeNulls().create();
В вашей проблеме, возможно, вам не нужно настраивать это.
Надеюсь, это поможет.