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

时间:2013-07-31 12:15:16

标签: java json spring-mvc gson

我有一个像这样的json:

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

我想将此填充到ArrayList<String[]>,请告诉我该怎么做?

空字符串不应转换为null。

2 个答案:

答案 0 :(得分:43)

这很简单,您只需要执行以下操作:

1.-首先创建Gson对象:

Gson gson = new Gson();

2.-然后获取Type的通讯员List<String[]>(请注意,由于Java type erasure,您无法执行List<String[]>.class之类的操作):

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

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

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

答案 1 :(得分:12)

查看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

Tis对您很重要:我们也支持多维数组,具有任意复杂的元素类型

对于null个对象,默认情况下Gson不会转换为null。 Ref. 但是,如果您想在以后执行此操作,则可以配置为扫描这些nulls属性。

Gson中实现的默认行为是忽略空对象字段。这允许更紧凑的输出格式;但是,客户端必须为JSON格式转换回Java时为这些字段定义默认值。

以下是配置Gson实例输出null的方法:

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

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

我希望它有所帮助。