我在文件中编写JsonArray时遇到了一些问题。当我使用
时ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(destFile));
out.writeObject(jarr);
抛出错误
java.io.NotSerializableException: com.google.gson.JsonArray
at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1344)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1651)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1497)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1461)
at com.example.calljavascript.MainActivity.copyFile(MainActivity.java:281)
at com.example.calljavascript.MainActivity.onResultRecived(MainActivity.java:191)
at com.example.calljavascript.JavaScriptInterface.receiveValueFromJs(JavaScriptInterface.java:32)
at com.android.org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
at com.android.org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:53)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.os.HandlerThread.run(HandlerThread.java:61)
我也试过
FileWriter file = new FileWriter(destFile);
file.write(jarr.toString());
到FileWriter
,我们可以写jsonobject
。因为我从几乎来源获得。我们可以在toString()
之后编写jsonarray,而且我不能使用toString()
来编写Jsonarray
。因为toString()
之后,我不能再使用那个json文件,这是什么问题?我无法得到它。
在将jsonarray转换为bytearray后,我也尝试了ByteArrayInputStream
,但是没有成功读取json文件。
请告诉我一个有效的方法来编写JsonArray,其中不需要使用toString()
答案 0 :(得分:0)
由于您使用的是GSON,因此您可以使用GSON Stream APIs来写入和读取文件。
答案 1 :(得分:0)
正如您的logcat跟踪说java.io.NotSerializableException: com.google.gson.JsonArray
,JsonArray
未实现Serializable
,因此out.writeObject(jarr);
无法运行。当您致电JsonArray.toString()
时,String
的结果会实现Serializable
。并且JsonArray
DO 的toString
方法继承自Object
。您可以致电out.writeObject(jarr.toString());
将JsonArray
写入File
。
答案 2 :(得分:0)
请试试这个,它对我有用:
UserCredential credentials = new UserCredential();
credentials.Subscriber = subscriber;
credentials.Email = email;
credentials.Password = password;
Gson gson = new Gson();
String json = gson.toJson(credentials);
try
{
FileOutputStream fos = context.openFileOutput(CredentialsFile, Context.MODE_PRIVATE);
fos.write(json.getBytes());
fos.close();
} catch (Exception e)
{
Log.e("Credentials error ", e.getMessage());
}