2014-11-04 69 views
0

我有一個文件query.json,其中包含[["Rain"], ["Cloudy", "Sprinkler"], [false, true]]表示查詢貝葉斯網絡。(Java)從文件錯誤解析JSON

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值是包含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 2014-11-04 02:56:05