开发者社区> 问答> 正文

Android-JSONObject转换为字符串而不进行转义

0

我正在尝试读取/写入json文件。但是在第一次写入之后,json会转义并再次读取将不起作用。我具有以下json结构,但具有更多的价值:

{
  "events": {
    "XdQKixgtraz17eDHb6OW": {
      "department": "Côte-d'Or",
      "objectName": "Dijon",
      "uid": "PMhzfzWlm6vN2yL1kY2i"
    }
  }
}

这是我的阅读功能:

public static JSONObject readJSONFile (String path, Context context){
    try {
        File jsonFile = new File(context.getFilesDir(), path);
        FileInputStream stream = new FileInputStream(jsonFile);
        String jsonStr = null;
        try {
            FileChannel fc = stream.getChannel();
            MappedByteBuffer bb = fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());

            jsonStr = Charset.defaultCharset().decode(bb).toString();
        }
        catch(Exception e){
            e.printStackTrace();
        }
        finally {
            stream.close();
        }

        JSONObject jsonObj = new JSONObject((jsonStr));
        return jsonObj;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

这是我的写功能:

public static boolean writeFile(Context context, String fileName, String jsonString) {
    try {
        File file = new File(context.getFilesDir(), fileName);

        FileOutputStream stream = new FileOutputStream(file);
        stream.write(jsonString.getBytes());
        stream.close();

        return true;
    } catch (FileNotFoundException fileNotFound) {
        fileNotFound.printStackTrace();
        return false;
    } catch (IOException ioException) {
        ioException.printStackTrace();
        return false;
    }
}

我最后得到一个看起来像这样的字符串,我再也看不懂了..:

{"events":{"XdQKixgtraz17eDHb6OW":"{\"department\":\"Côte-d'Or\",\"objectName\":\"Dijon\",\"uid\":\"PMhzfzWlm6vN2yL1kY2i\"}"}}

由于我的json文件大约2 Mo而没有逃避,我试图不增加转义字符的大小。

我应该对原始文件进行转义,然后在每次读取时对其进行转义,还是有一种没有任何转义的方法?

谢谢你的时间。

展开
收起
垚tutu 2019-12-12 09:16:05 2414 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载