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

Pha*_*tty 14 java json spring-mvc gson

我有一个这样的json:

[
  [
    "Passport Number",
    "NATIONALITY",
    "REASONS"
  ],
  [
    "SHAIS100",
    "INDIA",
    ""
  ],
  [
    "",
    "",
    "Agent ID is not matched."
  ],
  [
    "",
    "",
    ""
  ]
]
Run Code Online (Sandbox Code Playgroud)

我想填充这个ArrayList<String[]>,请告诉我该怎么办?

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

Mik*_*ikO 46

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

1.-首先创建Gson对象:

Gson gson = new Gson();
Run Code Online (Sandbox Code Playgroud)

2.-然后找Type你的通讯员List<String[]>(注意你不能做类似于List<String[]>.classJava 类型擦除的事情):

Type type = new TypeToken<List<String[]>>() {}.getType();
Run Code Online (Sandbox Code Playgroud)

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

List<String[]> yourList = gson.fromJson(yourJsonString, type);
Run Code Online (Sandbox Code Playgroud)


Dei*_*zan 14

看看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
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Gson gson = new GsonBuilder().serializeNulls().create();
Run Code Online (Sandbox Code Playgroud)

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

我希望它有所帮助.