Android设备不完整的JSON?

时间:2015-08-18 10:19:31

标签: android json

在我的Android应用程序中,我使用/sdcard/subdirectory方法在onStop()中将JSON字符串写入位于Android平板电脑上的JSON文件中。该功能成功执行。

如果我将此结果.json-file从Android设备复制到我的计算机,并且我在Notepad ++中打开此JSON文件,则JSON无效:它不完整。

这是所述JSON文件的内容:

{... there are about 20 of these elements, I won't list them all for readability...},
{"name":"Marker7","long":2.924128,"lat":51.204594,"warning":"Sharp turn"},
{"name":"Marker8","long":2.9260479999999998,"lat":51.203364,"warning":"Dead end"},
{"name":"Marker9","long":2.926252,"lat":51.203209,"warning":"

正如您所看到的,JSON在warning的{​​{1}}部分被截断,使得这个JSON无效。

以下是多么奇怪:我的应用程序也在Marker9 - 方法中读取此文件,如果我打印此JSON,它确实显示正确和完整的JSON!因此,在我的Android应用程序中,我没有遇到任何问题,并且我认为我的写入方法和生成的JSON文件正在按预期工作,因为从读取函数中检索了正确的数据。但是,如果我想复制此JSON并在其他地方使用它,我将没有有效的JSON文件。

这是为什么?这与我的Android设备使用的 ext4 - 文件系统有什么关系吗?

我还注意到,当文件达到 1.18kB 大小标记(如我的资源管理器视图中所示)时,似乎会发生这种情况,但同样:在Android应用中检索到正确且完整的IS .. 。),因为每次我复制文件并且它似乎被切断时,大小总是精确到1.18kB。

更新

阅读JSON的代码:

onCreate()

编写JSON的代码:

public String loadJSON() {
        String json = null;
        try {

            //InputStream is = getAssets().open("markers.json");
            File jsonFile = new File(Environment.getExternalStorageDirectory(), "osmdroid/markers.json");
            FileInputStream is = new FileInputStream(jsonFile);

            int size = is.available();

            byte[] buffer = new byte[size];

            is.read(buffer);

            is.close();

            json = new String(buffer, "UTF-8");


        } catch (IOException ex) {
            ex.printStackTrace();
            return null;
        }
        return json;

    }

private void readJsonMarkers() throws JSONException {
        JSONObject obj = new JSONObject(loadJSON());
        JSONArray jsonArray = obj.getJSONArray("markers");
        System.out.println("JSON LOAD: " + jsonArray);  // this shows the correct, full list of markers
    }

0 个答案:

没有答案