2012-01-26 11 views
0
class Talk { 
     String[] values; 
     try { 
      InputStream is = getAssets().open("jdata.txt"); 
      DataInputStream in = new DataInputStream(is); 
      BufferedReader br = new BufferedReader(new InputStreamReader(in)); 

      //Read File Line By Line 
      while ((br.readLine()) != null) { 
       // Print the content on the console 
       strLine = strLine + br.readLine(); 
      } 
     } catch (Exception e) { //Catch exception if any 
      System.err.println("Error: " + e.getMessage()); 
     } 
     parse(strLine); 
    } 

    public void parse(String jsonLine) { 
     Data data = new Gson().fromJson(jsonLine, Data.class); 
     values[0]= data.toString(); 
     return; 
    } 
} 

これはjdata.txtである:これはjava.lang.IllegalStateException:予想BEGIN_OBJECTエラーが

"{" + "'users':'john' + "}" 

Data.java

public class Data { 
    public String users; 
} 

私が手にエラーがされています

java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 9 

誰でもできるこのエラーが意味することとそれをどのように削除するのかを私に明白に伝えますか?

編集:

私は答えを得ました。これらは私がやらなければならない調整です。まず、String配列を配列リストに変更します。

List<String> values = new ArrayList<String>(); 

次の微調整はここにあった:

strLine = currentLine; 
       currentLine = br.readLine(); 
       //Read File Line By Line 
       while (currentLine != null) { 
       // Print the content on the console 

        strLine = strLine + currentLine; 
        currentLine = br.readLine(); 
       } 

最終微調整はここにあった:コードの

String val = data.toString(); 
values.add(val); 

一部の部品は冗長かもしれないが、私は後でそれの世話をします。

+0

あなたのjsonは無効ですこれは正しいjson形式です{{"users": "john" } " – RanRag

+0

@RanRagこれを試してみましたか?うまくいきませんでした。それは正しい結果を得るためにそれを変更しました。 – Hick

答えて

1

あなたはreadLine()を2度呼びます。

while ((br.readLine()) != null) { 

変更ループへ:

//Read File Line By Line 
String currentLine = br.readLine(); 
while (currentLine != null) { 
    // Print the content on the console 
    strLine = strLine + currentLine; 
    currentLine = br.readLine(); 
} 

また、jdata.txtの内容は次のようになります。

{"users":"john"} 

せずに次の行をファイルから読み込むと失われます余分な+または"文字。

+0

それをしました。それでもエラーは続く。 – Hick

+0

デバッグを試しましたか? Gsonに渡す文字列が正しいことを確認しましたか?Gsonはオープンソースなので、コードにもデバッグできます。 –

+0

私はデバッグしました。コードは次の行の後に改行されます。Data data = new Gson()。fromJson(jsonLine、Data.class); – Hick

0

@Eliに記載されている問題以外。

これは、Gson Libraryを使用してjsonを解析する方法です。

Gson gson = new Gson(); 
Data data = gson.fromJson(jsonLine, Data.class); 
System.out.println("users:" + data.getusers()); 

今私のData.javaはファイル

public class Data { 

public String users; 

public String getusers() { 
return users; 
     } 

出力=

JSonString jdata.txt中= { "ユーザー": "ジョン"}

ユーザー:ジョン// jsonの解析後。

関連する問題