Converter um JSON em Array?

Gostaria de saber como posso fazer para transformar em json em um array.
O caso é o seguinte: Eu envio um JSON por post para um HttpServer. Ele le linha por linha, e concatena numa String chamada TextReceived. Ai fica um String gigante, certo? Eu precisava transformar isso num array, para depois jogar num banco de dados.

NOTA: Estou usando o Json Jackson!

public void handle(HttpExchange he) throws IOException {
			Headers h = he.getResponseHeaders();
			h.add("Access-Control-Allow-Origin", "*");
			h.add("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
			Map<String, Object> parameters = new HashMap<String, Object>();
			InputStreamReader isr = new InputStreamReader(he.getRequestBody(), "utf-8");
			BufferedReader br = new BufferedReader(isr);
			String response = "sucess";
			String thisLine = "";
			String TextReceived = "";
			while ((thisLine = br.readLine()) != null) {
				TextReceived += thisLine;
			}
	System.out.println(TextReceived); 
			he.sendResponseHeaders(200, response.length());
			OutputStream os = he.getResponseBody();
			os.write(response.toString().getBytes());
			os.close();
		}
	}

Eu já tentei esses métodos para conversão, porém, não rolou

//ObjectMapper objectMapper = new ObjectMapper();
//TypeFactory typeFactory = objectMapper.getTypeFactory();
		// Método 1 - Não retorna resposta (There was an error connecting to localhost)
		// List<dataHandler> dataHandlerList = objectMapper.readValue(TextReceived, new
		// TypeReference<List<dataHandler>>() { } ) ;
		// System.out.println(dataHandlerList);
		// Método 2 - Não retorna resposta (There was an error connecting to localhost)
		// List<dataHandler> dataHandlerList = objectMapper.readValue(TextReceived,
		// typeFactory.constructCollectionType(List.class, dataHandler.class));
		// System.out.println(dataHandlerList);
		//Método 3 -  Não retorna resposta (There was an error connecting to localhost)
		//dataHandler[] server = objectMapper.readValue(TextReceived, typeFactory.defaultInstance().constructArrayType(dataHandler.class));
		//System.out.println(server);

Dê uma olhada no Gson

2 curtidas

Independente de jackson ou do que for, se você serializar os objetos com Gson, pode deserializar direto, sem ter que ser quebrado em um array.

Serializar seria o “transformar objetos Java em json”?

Isso.

No caso de ter montado os Jsons com por um builder, eu não estaria serializando ele, né? Ou seria serializar ainda?
Eu fiz assim, aí esse Json que eu tenho que converter em array contém quatro Jsons dentro

Depende. Eu não sei como estes builders estão construídos, o que devolvem.

manda ai um exemplo do json que vc vai transformar.

{
    "jsonrecebido": "",
    "cpuInfo": {
        "pacote:": "cpu",
        "modelo": "Core(TM) i5-2400 CPU @ 3.10GHz",
        "clock": 3400,
        "nucleos": 4,
        "uptime": "Uptime: 1 dias, 22 horas, 49 minutos,39 segundos.",
        "usodacpu": 25.238094
    },
    "raminfo": {
        "pacote:": "ram",
        "livre": "5,77GB",
        "total": "11,69GB",
        "uso": "5,92GB",
        "porcentagemdeuso": 50.643173
    },
    "hddinfo": {
        "pacote:": "hds",
        "particoes": [{
            "unidade": "/",
            "tipodeparticao": null,
            "sistema": "Linux",
            "espacototal": "457,45GB",
            "espacoutilizavel": "412,86GB",
            "porcentagemdeuso": 9.747737
        }]
    },
    "netinfo": {
        "pacote:": "net",
        "gateway": "172.17.0.254",
        "hostname": "leon-System-Product-Name",
        "dominio": "(none)",
        "dns": "127.0.0.53",
        "ips": [{
            "ip": "172.17.199.255"
        }]
    }
}

No final, tenho 4 Jsons dentro de 1 json que tá sendo enviado

Para converter essa estrutura para objetos java, vc deve criar as classes que vão representar essa estrutura e depois usar o Gson para fazer o trabalho:

public class ObjetoRoot {
	private String jsonrecebido;
	private CpuInfo cpuInfo;
	private Raminfo raminfo;
	private Hddinfo hddinfo;
	private Netinfo netinfo;
	
	/*
	 * Importante! Cada classe que compõem a classe ObjetoRoot (CpuInfo, RamInfo, HddInfo e NetInfo),
	 * deve ser criada respeitando os nomes dos atributos do json de cada uma
	 */
	
	// getters and setters
}

e para converter com Gson:

ObjetoRoot obj = gson.fromJson(seuJsonString, ObjetoRoot.class);