2014-11-04 2 views
0

나는 query.json 파일에 베이지안 네트워크에 대한 쿼리를 나타내는 [["Rain"], ["Cloudy", "Sprinkler"], [false, true]]을 포함하고 있습니다. Query query = Query.queryFromString(queryContents);(Java) JSON을 파일 오류에서 구문 분석

String queryContents = readEntireFile(new File("query.json"));

은 전체 파일을 읽고 다음 쿼리를 만들 수있는 방법을 호출하는 데 사용됩니다. 내 queryFromString(String s) 메서드를 호출 할 때

나는 오류 얻을 :

Exception in thread "main" com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING

queryFromString 방법은

public static Query queryFromString(String s) { 
    Gson gson = new Gson(); 
    JsonParser parser = new JsonParser(); 
    JsonArray jsonNodes = parser.parse(s).getAsJsonArray(); 
    JsonElement element = jsonNodes.get(0); 
    JsonArray jsonNode = element.getAsJsonArray(); 
    String [] q = gson.fromJson(jsonNode.get(0), String[].class); 
    String [] e = gson.fromJson(jsonNode.get(1), String[].class); 
    boolean[] v = gson.fromJson(jsonNode.get(2), boolean[].class); 



    return null; 
    } 

이 JSON을 사용하여 내 처음이다, 왜 내가 '정말 확실하지 이 오류가 발생합니다. 어떤 도움이 필요합니까?

답변

1

루트 JSON 값은 다른 3 개의 JSON 값, 즉 문자열 값을 포함하는 두 개의 JSON 배열과 부울 값을 포함하는 JSON 배열을 포함하는 JSON 배열입니다.

루트 JSON 배열에서 직접 작업해야합니다.

JsonArray jsonNodes = parser.parse(s).getAsJsonArray(); 
String[] q = gson.fromJson(jsonNodes.get(0), String[].class); 
String[] e = gson.fromJson(jsonNodes.get(1), String[].class); 
boolean[] v = gson.fromJson(jsonNodes.get(2), boolean[].class); 
+0

아, 감사합니다. 가끔씩 당신에게주는 작은 것들. – KTF