我有这段代码,其中“ Ocupacion”是具有另一个属性对象的对象类。 (由于是大班,所以我不会发布该班的所有属性)
public interface Node<T, N extends Node<T, N>> {
T getValue();
List<N> getNeighbors();
void addNodes(List<N> nodes);
}
public interface TreeNode<T> extends Node<T, TreeNode<T>> {
List<TreeNode<T>> getChildren();
void addChildren(List<TreeNode<T>> treeNodes);
@Override
default List<TreeNode<T>> getNeighbors() {
return getChildren();
}
@Override
default void addNodes(List<TreeNode<T>> nodes) {
addChildren(nodes);
}
}
然后在另一个类中,我获取json字符串,我想解析它。我这样做:
public String genHor(){
Collection<Ocupacion> ocupas = new ArrayList<>();
ocupas= H.makeOcupacion();
Gson gson = new Gson();
return gson.toJson(ocupas);
}
然后我得到了java.lang.IllegalStateException:不是JSON对象
字符串json就是这样:
public void assig(String json){
JsonObject obj = new JsonParser().parse(json).getAsJsonObject();
}
答案 0 :(得分:1)
... | awk -F'/' '{print $NF "\t" $0}' | sort | cut -f2
这是一个json数组,而不是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}}]
中,而不位于[]
中:
{}
答案 1 :(得分:0)
jsonString实际上是jsonArray而不是jsonObject。请尝试以下操作:
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"));
}
答案 2 :(得分:-1)
尝试这个:
public static void assig(String json){
Gson gson = new Gson();
Ocupacion[] occs = gson.fromJson(json, Ocupacion[].class);
System.out.println(occs);
}