2014-11-04 2 views
0

У меня есть файл query.json, который содержит [["Rain"], ["Cloudy", "Sprinkler"], [false, true]], чтобы представить запрос для байесовской сети.(Java) Parsing JSON из файла error

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

Используется, чтобы читать весь файл, а затем вызвать метод для создания запроса.

Когда я называю 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 представляет собой массив JSON, содержащий 3 других значения 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