web-dev-qa-db-fra.com

Comment convertir un tableau de chaînes en objet à l'aide de GSON / JSON?

J'ai un json comme ça:

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

Je veux renseigner ceci sur ArrayList<String[]>, Dites-moi comment faire?

Et les chaînes vides ne doivent pas être converties en valeurs nulles.

16

C'est très simple, il vous suffit de faire ce qui suit:

1.- Créez d'abord l'objet Gson:

Gson gson = new Gson();

2.- Ensuite, obtenez le correspondant Type pour votre List<String[]> (Notez que vous ne pouvez pas faire quelque chose comme List<String[]>.class en raison de Java effacement de type ):

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

3.- Enfin analyser le JSON dans une structure de type type:

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

Jetez un oeil à 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

Cela est important pour vous: Nous prenons également en charge les tableaux multidimensionnels, avec des types d'éléments arbitrairement complexes

Pour les objets null, Gson par défaut ne sera pas converti en null. Ref. Mais vous pouvez configurer pour scanner ces nulls attributs si vous voulez le faire après.

Le comportement par défaut implémenté dans Gson est que les champs d'objet null sont ignorés. Cela permet un format de sortie plus compact; cependant, le client doit définir une valeur par défaut pour ces champs car le format JSON est reconverti en Java.

Voici comment configurer une instance Gson pour afficher null:

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

Dans votre problème, vous n'avez peut-être pas besoin de configurer cela.

J'espère que ça aide.

14
Deividi Cavarzan