Olá Pessoal,
Sou Iniciante no java e peguei um projeto para converter varios JSONs em arquivo TXT. A minha Ideia era transformar o Json em um Objeto JAVA e depois converter o objeto Java em TXT. Mas nada que estou tentando está funcionando, agradeceria muito uma ajuda da comunidade.
O que fiz até agora:
Classe Java para para receber os dados do JSON
public class Items
{
private Areas[] areas;
private String date;
public Areas[] getAreas ()
{
return areas;
}
public void setAreas (Areas[] areas)
{
this.areas = areas;
}
public String getDate ()
{
return date;
}
public void setDate (String date)
{
this.date = date;
}
@Override
public String toString()
{
return "ClassPojo [areas = "+areas+", date = "+date+"]";
}
}
No total são 5 classes com esse acima.
Fiz varias tentativa para ler o JSON, primeira classe main que fiz foi essa porque parecia mais fácil:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import com.google.gson.Gson;
public class Test {
public static void main(String[] args) {
Gson gson = new Gson();
try {
BufferedReader br = new BufferedReader(new FileReader("C:/Users/614952/Desktop/Projeto_Claro/MyJsonFile/PAINEL_DE_COTAS_01.json"));
Items obj = gson.fromJson(br, Items.class);
System.out.println(obj);
} catch (IOException e) {
e.printStackTrace();
}
}
}
O problema aqui é que obj retorna nulo:
Fiz essa também de um tuturial:
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Map;
import org.junit.Assert;
import org.junit.Test;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class JsonPaserFile {
@Test
public void testParseJson() {
JsonParser parser = new JsonParser();
InputStream inputSteam = getClass().getClassLoader().getResourceAsStream("sample.json");
Reader reader = new InputStreamReader(inputSteam);
// JsonElement rootElement = parser.parse(reader);
JsonElement rootElement = parser.parse(reader);
Assert.assertNotNull(rootElement);
JsonObject rootObject = rootElement.getAsJsonObject();
JsonObject itens = rootObject.getAsJsonObject("items").getAsJsonObject("date");
JsonArray array = null;
for (Map.Entry<String, JsonElement> entry : itens.entrySet()) {
JsonObject entryObject = entry.getValue().getAsJsonObject();
array = entryObject.getAsJsonArray("items");
// Assert.assertNotNull(array);
}
Assert.assertEquals(4, array.size());
}
}
Nesse caso o problema é esse aqui:
JsonPaserFile (Failed Tests first)
br.com.claro.json.JsonPaserFile
testParseJson(br.com.claro.json.JsonPaserFile)
java.lang.ClassCastException: com.google.gson.JsonArray cannot be cast to com.google.gson.JsonObject
** at com.google.gson.JsonObject.getAsJsonObject(JsonObject.java:205)**
** at br.com.claro.json.JsonPaserFile.testParseJson(JsonPaserFile.java:26)**
** at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)**
** at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)**
** at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)**
** at java.lang.reflect.Method.invoke(Unknown Source)**
** at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)**
** at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)**
** at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)**
** at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)**
** at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)**
** at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)**
** at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)**
** at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)**
** at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)**
** at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)**
** at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)**
** at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)**
** at org.junit.runners.ParentRunner.run(ParentRunner.java:363)**
** at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)**
** at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)**
** at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:538)**
** at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)**
** at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)**
** at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)**
Os dados chegam até : JsonObject itens = rootObject.getAsJsonObject(“items”).getAsJsonObject(“date”);
Dai gerar o erro.
Eu acho que o primeiro exemplo usando GSON é mais fácil de fazer se puder ajudar eu agradeço muito!
Um dos Json que estava testando é esse aqui:
{
“items”: [
{
“date”: “2018-04-24”,
“areas”: [
{
“label”: “BK01”,
“calendar”: {
“count”: [
0
]
},
“categories”: [
{
“label”: “CLASSE1”,
“calendar”: {
“count”: [
0
]
}
},
{
“label”: “CLASSE2”,
“calendar”: {
“count”: [
0
]
}
},
{
“label”: “CLASSE2_PME”,
“calendar”: {
“count”: [
0
]
}
}
]
},
{
“label”: “BK02”,
“calendar”: {
“count”: [
0
]
},
“categories”: [
{
“label”: “CLASSE1”,
“calendar”: {
“count”: [
0
]
}
},
{
“label”: “CLASSE2”,
“calendar”: {
“count”: [
0
]
}
},
{
“label”: “CLASSE2_PME”,
“calendar”: {
“count”: [
0
]
}
}
]
},
{
“label”: “BK03”,
“calendar”: {
“count”: [
0
]
},
“categories”: [
{
“label”: “CLASSE1”,
“calendar”: {
“count”: [
0
]
}
},
{
“label”: “CLASSE2”,
“calendar”: {
“count”: [
0
]
}
},
{
“label”: “CLASSE2_PME”,
“calendar”: {
“count”: [
0
]
}
}
]
},
{
“label”: “BK04”,
“calendar”: {
“count”: [
0
]
},
“categories”: [
{
“label”: “CLASSE1”,
“calendar”: {
“count”: [
0
]
}
},
{
“label”: “CLASSE2”,
“calendar”: {
“count”: [
0
]
}
},
{
“label”: “CLASSE2_PME”,
“calendar”: {
“count”: [
0
]
}
}
]
},
{
“label”: “GBH - Todas as \u00c1reas”,
“calendar”: {
“count”: [
0
]
},
“categories”: [
{
“label”: “CLASSE1”,
“calendar”: {
“count”: [
0
]
}
},
{
“label”: “CLASSE2”,
“calendar”: {
“count”: [
0
]
}
},
{
“label”: “CLASSE3”,
“calendar”: {
“count”: [
0
]
}
},
{
“label”: “CLASSE6”,
“calendar”: {
“count”: [
0
]
}
}
]
}
]
}
]
}