2013-07-31 2 views
11

У меня есть JSON как это:Как преобразовать массив строк в объект с помощью GSON/JSON?

[ 
    [ 
    "Passport Number", 
    "NATIONALITY", 
    "REASONS" 
    ], 
    [ 
    "SHAIS100", 
    "INDIA", 
    "" 
    ], 
    [ 
    "", 
    "", 
    "Agent ID is not matched." 
    ], 
    [ 
    "", 
    "", 
    "" 
    ] 
] 

Я хочу, чтобы заполнить это ArrayList<String[]>, скажите, пожалуйста, как это сделать?

И пустые строки не должны преобразовываться как null.

ответ

31

Это очень просто, вам просто нужно сделать следующее:

1.- Сначала создайте Gson объект:

Gson gson = new Gson(); 

2.- Тогда получите корреспондент Type для List<String[]> (Обратите внимание, что вы не можете сделать что-то вроде List<String[]>.class из-за type erasure в Java):

Type type = new TypeToken<List<String[]>>() {}.getType(); 

3.- Fi на месте разобрать JSON в структуру типа type:

List<String[]> yourList = gson.fromJson(yourJsonString, type); 
11

Посмотрите на 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. Ref. Но вы можете настроить сканирование тех атрибутов nulls, если вы хотите это сделать.

Поведение по умолчанию, которое реализовано в Gson, заключается в том, что поля нулевого объекта игнорируются. Это позволяет использовать более компактный выходной формат; однако клиент должен определить значение по умолчанию для этих полей, так как формат JSON преобразуется обратно в его Java.

Вот как вы бы настроить Gson экземпляр для вывода нуля:

Gson gson = new GsonBuilder().serializeNulls().create(); 

В ваших проблемах может быть, вам не нужно настраивать это.

Надеюсь, это поможет.

Смежные вопросы