如何处理android 1.6到2.x中的版本问题

时间:2011-02-09 15:54:45

标签: android json

我在android中为1.6构建了一个JSON使用者(认为在最旧版本的基础上构建最大支持是一种很好的做法)。我能够在1.5-1.6下成功检索json。然而,我只是把我的机器人(2.x)上的应用程序扔了,现在我收到了“org.json.jsonexception:字符值的预期文字值......”。为什么版本不同?我怎么处理这个?

3 个答案:

答案 0 :(得分:0)

如果您无法使用该库,请尝试GSON,这很棒

http://code.google.com/p/google-gson/

答案 1 :(得分:0)

我有一个方法将InputStream转换为JSON的字符串表示形式。我需要将子字符串从(intial,length() - 1)调整为(initial,length() - 2)以使其在1.5和2.x中都起作用。谢谢你的帮助。

private static String convertStreamToString(InputStream is) {  
   /* 
    * To convert the InputStream to String we use the BufferedReader.readLine() 
    * method. We iterate until the BufferedReader returns null which means 
    * there's no more data to read. Each line will appended to a StringBuilder 
    * and returned as String. 
    */  
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));  
    StringBuilder sb = new StringBuilder();  

    String line = null;  
    try {  
        while ((line = reader.readLine()) != null) {  
            sb.append(line + "\n");  
        }  
    } catch (IOException e) {  
        e.printStackTrace();  
    } finally {  
        try {  
            is.close();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }
    // API is defective and does not return correct json response.
    // Reformat string response to confirm to expected json response
    // return sb.toString();
    return  "{\"Results\":" + sb.substring(11, sb.length()-2) + "}\n" ;
}  

答案 2 :(得分:0)

我有同样的错误消息。在我的情况下,事实证明JSON lib是混乱的,因为返回的JSON引用了(“)。这显然混淆了字符串的长度,并导致了异常。