Java 在Android中从.ser文件读取/解析JSON对象
我的SD卡中有一个扩展名为abc.ser的文件,该文件包含JSON对象,如Java 在Android中从.ser文件读取/解析JSON对象,java,android,json,serialization,deserialization,Java,Android,Json,Serialization,Deserialization,我的SD卡中有一个扩展名为abc.ser的文件,该文件包含JSON对象,如 {"music":"abc","highqualityavailable":"true","cacheable":"true"} {"music":"xyz","highqualityavailable":"false","cacheable":"true"} {"music":"aaa","highqualityavailable":"true","cacheable":"true"} {"music":"bbb","
{"music":"abc","highqualityavailable":"true","cacheable":"true"}
{"music":"xyz","highqualityavailable":"false","cacheable":"true"}
{"music":"aaa","highqualityavailable":"true","cacheable":"true"}
{"music":"bbb","highqualityavailable":"false","cacheable":"true"}
{"music":"ccc","highqualityavailable":"true","cacheable":"true"}
该文件包含JSON对象,但不是正确的JSON格式我如何在我的应用程序中读取或解析它我已经读取了文件中的字符串,但不知道如何将其转换为POJO
String root = Environment.getExternalStorageDirectory().getAbsolutePath();
File file = new File(root+"/tmp/playerSongsString.ser");
if (file.exists()) {
FileInputStream stream = null;
try {
stream = new FileInputStream(file);
FileChannel fc = stream.getChannel();
MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
/* Instead of using default, pass in a decoder. */
jString = Charset.defaultCharset().decode(bb).toString();
JSONObject object = new JSONObject(jString);
Log.d("json:",jString);
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} finally {
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
首先更改JSON数据,它不是正确的JSON格式 [{“音乐”:“abc”,“高质量可用”:“真实”,“可缓存”:“真实”}, {“音乐”:“xyz”,“高质量可用”:“假”,“可缓存”:“真”},{“音乐”:“aaa”,“高质量可用”:“真”,“可缓存”:“真”},{“音乐”:“bbb”,“高质量可用”:“假”,“可缓存”:“真”},{“音乐”:“ccc”,“高质量可用”:“真”,“可缓存”:“真”}] 然后将字符串转换为JSON数组
更多详细信息:如果您可以修复这些文件以获得正确的JSON格式的数据,这将大大简化您的任务。是的,我知道,但该文件是由其他应用程序创建的,我无法控制它如果您确定文件大小很小,您只需使用
JSONObject object=new JSONObject(“[”+jString+“])代码>将JSONTAR对象解析为波霍,您可以参考我可以追加方括号,但是我不在对象之间有逗号,s作为WelIf,您不在两个对象之间添加逗号,那么它将不被考虑为JSON数组。