如何使用GSON / JSON将字符串数组转换为对象?

我有一个像这样的json:

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

我想将此填充到ArrayList ,请告诉我该怎么办?

并且空字符串不应转换为null。

这很简单,你只需要做以下事情:

1.-首先创建Gson对象:

 Gson gson = new Gson(); 

2.-然后获取List的对应Type (请注意,由于Java的类型擦除 ,您无法执行类似List.class的操作):

 Type type = new TypeToken>() {}.getType(); 

3.-最后将JSON解析为类型type的结构:

 List yourList = gson.fromJson(yourJsonString, type); 

看看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(); 

在您的问题中,您可能不需要配置它。

我希望它有所帮助。