代码之家  ›  专栏  ›  技术社区  ›  David

JSON字符为android的未终止对象

  •  1
  • David  · 技术社区  · 10 年前

    我有一个 .json 包含JSON数据的文件。我通过简单的Ctrl+C和Ctrl+V(从服务器输出)创建了这个文件

    [{
        "ID": "109",
        "objectTypeID": "1",
        "names": [{
            "ID": 1,
            "code": "lt",
            "value": "Trak\u0173 salos pilis "
        }, {
            "ID": 2,
            "code": "en",
            "value": "Trakai Island Castle"
        }, {
            "ID": 3,
            "code": "ru",
            "value": "\u0422\u0440\u0430\u043a\u0430\u0439\u0441\u043a\u0438\u0439 \u0437\u0430\u043c\u043e\u043a"
        }, {
            "ID": 4,
            "code": "de",
            "value": "Kasteel van Trakai"
        }],
        "descriptions": [{
            "ID": 1,
            "code": "lt",
            "value": "<div><strong>Paslap\u010di\u0173 m\u0117g\u0117jams ir ie&scaron;kotojams<\/strong><\/div>\r\n\r\n<div>Tiems, kurie domisi istorija, kurie m\u0117gsta paslaptingas vietoves, \u012f Trakus atkeliauti b\u016btina. Trak\u0173 pilis yra vienas labiausiai turist\u0173 lankom\u0173 objekt\u0173 Lietuvoje......"
        }]
    }]
    

    我已将此文件保存为 utf-8 编码 正如你所看到的,有很多 Unicode Characters 和html元素,如 <div> , <strong> 等等 现在我想解析这个文件。这是我的java/android代码

    private String getJSONString(File file){
            try {
                FileInputStream is = new FileInputStream(file.getAbsolutePath());
                int size = is.available();
                byte[] buffer = new byte[size];
                is.read(buffer);
                is.close();
                return new String(buffer, "UTF-8");
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
    
    private void object_parser(File file){
        String jsonString = getJSONString(file);
        JSONArray jsonArray = null;
        try {
                jsonArray = new JSONArray(jsonString);
                Log.d("OBJECTS_LIST_AAA", jsonArray.toString());
            } catch (JSONException e) {
                Log.d("OBJECTS_LIST_ERROR", e.getMessage()); // print error
                e.printStackTrace();
            }
        }
    }
    

    我得到这个错误 Unterminated object at character 5641 of [{"ID":"109","objectTypeID":"1","names":[{"ID":1,"code":"lt","value":"Trak\u0173 salos pilis "},...... 我认为这个文件中缺少格式。

    1 回复  |  直到 10 年前
        1
  •  1
  •   Shree Krishna    10 年前

    您的Every "Restaurant "Avilys"" 就像数据无效一样,您必须将所有数据替换为 "Restaurant Avilys" 作为仅用两个引号引用的单个String值。类似的情况也有很多。请注意,您发布的部分显然是有效的,可以很容易地解析。这里没有这样的错误。