/ / Ako deserializovať súbor JSON do zoznamu polí s vnorenými triedami? - java, json, gson

Ako deserializovať súbor JSON do ArrayList so vnorenými triedami? - java, json, gson

Mám túto triedu Java:

class A {
private B b;

class B {
private String a;
//getter + setter
}
}

Toto je obsah súboru JSON:

[{"b" : {"a": "Hello!"}},
{"b" : {"a": "Hi!"}},
{"b" : {"a": "Hello2!"}}]

Chcem deserializovať svoj súbor JSON do súboru ArrayList<A> s vnorenou triedou vo vnútri. Ako to môžem urobiť?

odpovede:

1 pre odpoveď č. 1

Môžete to jednoducho dosiahnuť pomocou Gsona.

package stackoverflow.questions.q18932252;

import java.lang.reflect.Type;
import java.util.*;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class Q18932252 {

public static void main(String[] args){
String json = "[{"b" : {"a": "Hello!"}}, {"b" : {"a": "Hi!"}}, {"b" : {"a": "Hello2!"}}]";
Type listOfA = new TypeToken<List<A>>() {}.getType();
Gson g = new Gson();
ArrayList<A> result = g.fromJson(json, listOfA);
System.out.println(result);


}

}

S týmto výsledkom (pridal som štandard toString metódy):

[A [b=B [a=Hello!]], A [b=B [a=Hi!]], A [b=B [a=Hello2!]]]

Keďže sa pýtate na súbor JSON, tj textový súbor, ktorý obsahuje reťazec JSON, uveďte prosím odkaz Ako vytvoriť reťazec Java z obsahu súboru otázka na načítanie súboru do reťazca.


0 pre odpoveď č. 2

Prečítajte si tento príspevok podľa informácií uvedených v otázke, ktorá by mala vyriešiť váš problém Json analyzuje Gson s údajmi a poliami


0 pre odpoveď č. 3

Použitím gson:

Gson gson = new Gson();
String json = "[{"b" : {"a": "Hello!"}}, {"b" : {"a": "Hi!"}}, {"b" : {"a": "Hello2!"}}]";
A[] arrA = new A[0];
System.out.println(Arrays.toString(gson.fromJson(json, arrA.getClass())));