简体   繁体   English

无法创建JsonObject java.lang.IllegalStateException:不是JSON对象

[英]can't create a JsonObject java.lang.IllegalStateException: Not a JSON Object

I have this code where "Ocupacion" is object class that have another atribute objects. 我有这段代码,其中“ Ocupacion”是具有另一个属性对象的对象类。 (since is a large class i don't post all the atributes of the class) (由于是大班,因此我不会发布该班的所有资料)

public String genHor(){
    Collection<Ocupacion> ocupas = new ArrayList<>();
    ocupas= H.makeOcupacion();
    Gson gson = new Gson();
    return gson.toJson(ocupas);
}

Then in another class where i recive the json String and i want to parse it. 然后在另一个类中,我获取json字符串,我想解析它。 I do that: 我这样做:

public void assig(String json){
    JsonObject obj = new JsonParser().parse(json).getAsJsonObject();
}

Then i get the java.lang.IllegalStateException: Not a JSON Object 然后我得到java.lang.IllegalStateException:不是JSON对象

String json is like that: 字符串json是这样的:

[{"sesionConcreta":{"grup":{"NumGr":10,"TamGr":200,"subgrupo":[{"NumSub":11,"TamSub":200}],"asignatura":"prop"},"sessio":{"HorasSes":2,"TipoSes":"TEORIA"}},"aula":{"NomAu":"a5105","Capacidad":200,"Tipo":"lab"},"diayHora":{"Dia":"L","Hora":8}}]
[{"sesionConcreta":{"grup":{"NumGr":10,"TamGr":200,"subgrupo":[{"NumSub":11,"TamSub":200}],"asignatura":"prop"},"sessio":{"HorasSes":2,"TipoSes":"TEORIA"}},"aula":{"NomAu":"a5105","Capacidad":200,"Tipo":"lab"},"diayHora":{"Dia":"L","Hora":8}}]

it is a json array not a json object because it is in [] not in {} : 它是一个json数组,而不是json对象,因为它位于[]而不位于{}

JsonArray jsonArr = new JsonParser().parse(json).getAsJsonArray();

JsonObject obj = jsonArr.get(0).getAsJsonObject();

JsonObject sesionConcretaObj = obj.get("sesionConcreta").getAsJsonObject();

JsonObject groupObj = sesionConcretaObj.get("grup").getAsJsonObject();

int numGr = groupObj.get("NumGr").getAsInt();

The jsonString is actually a jsonArray not a jsonObject. jsonString实际上是jsonArray而不是jsonObject。 Try with below: 请尝试以下方法:

String jsonStr = "[{\"sesionConcreta\":{\"grup\":{\"NumGr\":10,\"TamGr\":200,\"subgrupo\":[{\"NumSub\":11,\"TamSub\":200}],\"asignatura\":\"prop\"},\"sessio\":{\"HorasSes\":2,\"TipoSes\":\"TEORIA\"}},\"aula\":{\"NomAu\":\"a5105\",\"Capacidad\":200,\"Tipo\":\"lab\"},\"diayHora\":{\"Dia\":\"L\",\"Hora\":8}}]";

JSONArray jsonarray = new JSONArray(jsonStr);

for(int i = 0; i< jsonarray.length(); i++) {
  JSONObject sesionConcreta = (JSONObject)jsonarray.getJSONObject(i).get("sesionConcreta");
  JSONObject grup = (JSONObject)sesionConcreta.get("grup");
  System.out.println(grup.get("NumGr"));
}

try this one: 试试这个:

public static void assig(String json){
        Gson gson = new Gson();
        Ocupacion[] occs = gson.fromJson(json, Ocupacion[].class); 
        System.out.println(occs);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Can't not pass a Json Array as body in Restassured request - java.lang.IllegalStateException: Not a JSON Object - Can't not pass a Json Array as body in Restassured request - java.lang.IllegalStateException: Not a JSON Object java.lang.IllegalStateException:不是JSON对象 - java.lang.IllegalStateException: Not a JSON Object 解析json错误:java.lang.IllegalStateException:不是JSON对象: - Parsing json error: java.lang.IllegalStateException: Not a JSON Object: 从JSON创建一个对象(GSON:java.lang.IllegalStateException:预期BEGIN_OBJECT但是是STRING) - Create an object from JSON (GSON: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING) 无法创建sessionFactory对象:java.lang.IllegalStateException HQL - Failed to create sessionFactory object: java.lang.IllegalStateException HQL java.lang.IllegalStateException:无法创建Engine - java.lang.IllegalStateException: Couldn't create Engine java.lang.IllegalStateException:这不是JSON数组 - java.lang.IllegalStateException: This is not a JSON Array java.lang.IllegalStateException - java.lang.IllegalStateException JSON 错误“java.lang.IllegalStateException:应为 BEGIN_OBJECT 但在第 1 行第 1 列路径 $ 处为 STRING” - JSON Error "java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $" 创建GoogleApiClient对象时出错,给出java.lang.IllegalStateException:已经管理了ID为0的GoogleApiClient - Error to create object of GoogleApiClient, gives java.lang.IllegalStateException: Already managing a GoogleApiClient with id 0
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM