Note that there are some explanatory texts on larger screens.

plurals
  1. POstore objects in android gson
    text
    copied!<blockquote> <p><strong>Possible Duplicate:</strong><br> <a href="https://stackoverflow.com/questions/9598707/gson-throwing-expected-begin-object-but-was-begin-array">GSON throwing “Expected BEGIN_OBJECT but was BEGIN_ARRAY”?</a> </p> </blockquote> <p>I'm trying to store objects in android but I have a reading problem</p> <p>My object</p> <pre><code>public class User { private String login; private String password; public User(String login, String password){ this.login = login; this.password = password; } public String getLogin(){ return this.login; } } </code></pre> <p>I save my object in the internal memory device</p> <pre><code>String FILENAME = getString(R.string.store); User storeUser = new User(user.getText().toString(), password.getText().toString()); Gson gson = new Gson(); String data = gson.toJson(storeUser); JSONArray mJSONArray = new JSONArray(Arrays.asList(data)); String string = mJSONArray.toString(); FileOutputStream fos; fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); fos.write(string.getBytes()); fos.close(); </code></pre> <p>And I try to read</p> <pre><code>String FILENAME = getString(R.string.store); FileInputStream fis; fis = openFileInput(FILENAME); InputStreamReader inputStreamReader = new InputStreamReader(fis); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); StringBuilder sb = new StringBuilder(); String line; while ((line = bufferedReader.readLine()) != null) { sb.append(line); } System.out.println(sb.toString()); Gson gson = new Gson(); User user = gson.fromJson(sb.toString(), User.class); System.out.println(user.getLogin()); </code></pre> <p>And I have</p> <pre><code>01-12 14:06:36.703: I/System.out(30366): [" {\"login\":\"username2\",\"password\":\"password\"}"] 01-12 14:06:36.753: D/AndroidRuntime(30366): Shutting down VM 01-12 14:06:36.753: W/dalvikvm(30366): threadid=1: thread exiting with uncaught exception (group=0x400205a0) 01-12 14:06:36.753: E/AndroidRuntime(30366): FATAL EXCEPTION: main 01-12 14:06:36.753: E/AndroidRuntime(30366): com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 01-12 14:06:36.753: E/AndroidRuntime(30366): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:176) 01-12 14:06:36.753: E/AndroidRuntime(30366): at com.google.gson.Gson.fromJson(Gson.java:795) 01-12 14:06:36.753: E/AndroidRuntime(30366): at com.google.gson.Gson.fromJson(Gson.java:761) 01-12 14:06:36.753: E/AndroidRuntime(30366): at com.google.gson.Gson.fromJson(Gson.java:710) 01-12 14:06:36.753: E/AndroidRuntime(30366): at com.google.gson.Gson.fromJson(Gson.java:682) 01-12 14:06:36.753: E/AndroidRuntime(30366): at ant.junior.geoloc.MainActivity$1.onClick(MainActivity.java:65) 01-12 14:06:36.753: E/AndroidRuntime(30366): at android.view.View.performClick(View.java:2532) 01-12 14:06:36.753: E/AndroidRuntime(30366): at android.view.View$PerformClick.run(View.java:9293) 01-12 14:06:36.753: E/AndroidRuntime(30366): at android.os.Handler.handleCallback(Handler.java:587) 01-12 14:06:36.753: E/AndroidRuntime(30366): at android.os.Handler.dispatchMessage(Handler.java:92) 01-12 14:06:36.753: E/AndroidRuntime(30366): at android.os.Looper.loop(Looper.java:150) 01-12 14:06:36.753: E/AndroidRuntime(30366): at android.app.ActivityThread.main(ActivityThread.java:4277) 01-12 14:06:36.753: E/AndroidRuntime(30366): at java.lang.reflect.Method.invokeNative(Native Method) 01-12 14:06:36.753: E/AndroidRuntime(30366): at java.lang.reflect.Method.invoke(Method.java:507) 01-12 14:06:36.753: E/AndroidRuntime(30366): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 01-12 14:06:36.753: E/AndroidRuntime(30366): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 01-12 14:06:36.753: E/AndroidRuntime(30366): at dalvik.system.NativeStart.main(Native Method) 01-12 14:06:36.753: E/AndroidRuntime(30366): Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 01-12 14:06:36.753: E/AndroidRuntime(30366): at com.google.gson.stream.JsonReader.expect(JsonReader.java:339) 01-12 14:06:36.753: E/AndroidRuntime(30366): at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:322) 01-12 14:06:36.753: E/AndroidRuntime(30366): at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:165) 01-12 14:06:36.753: E/AndroidRuntime(30366): ... 16 more </code></pre> <p>Thanks</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload