JSONObject文本必须以“{”为1 [字符2第1行]并以“{”错误开头

时间:2014-02-27 07:39:01

标签: java android json parsing

String JSON = "http://www.json-generator.com/j/cglqaRcMSW?indent=4";

JSONObject jsonObject = new JSONObject(JSON);
JSONObject getSth = jsonObject.getJSONObject("get");
Object level = getSth.get("2");

System.out.println(level);

我提到了许多用于解析this link的解决方案,仍然遇到了相同的错误。 可以给我一个解析它的简单解决方案。

13 个答案:

答案 0 :(得分:10)

您的问题是String JSON = "http://www.json-generator.com/j/cglqaRcMSW?indent=4";不是JSON 您要做的是打开与http://www.json-generator.com/j/cglqaRcMSW?indent=4“的HTTP连接,并解析JSON 响应

String JSON = "http://www.json-generator.com/j/cglqaRcMSW?indent=4";
JSONObject jsonObject = new JSONObject(JSON); // <-- Problem here!

不会打开与网站的连接并检索内容。

答案 1 :(得分:7)

我有同样的问题。来自服务器的我的Json响应是[,和,]:

[{"DATE_HIRED":852344800000,"FRNG_SUB_ACCT":0,"MOVING_EXP":0,"CURRENCY_CODE":"CAD  ","PIN":"          ","EST_REMUN":0,"HM_DIST_CO":1,"SICK_PAY":0,"STAND_AMT":0,"BSI_GROUP":"           ","LAST_DED_SEQ":36}]

http://jsonlint.com/说有效的json。你可以复制并验证它。

我已修复以下代码作为临时解决方案:

BufferedReader br = new BufferedReader(new InputStreamReader((response.getEntity().getContent())));
String result ="";
String output = null;
while ((result = br.readLine()) != null) {
    output = result.replace("[", "").replace("]", "");
    JSONObject jsonObject = new JSONObject(output); 
    JSONArray jsonArray = new JSONArray(output); 
    .....   
}

答案 2 :(得分:2)

我也一样,开头有一个空的新行字符。 这解决了它:

int i = result.indexOf("{");
result = result.substring(i);
JSONObject json = new JSONObject(result.trim()); 
System.out.println(json.toString(4));  

答案 3 :(得分:2)

由于代码语句的顺序错误,我遇到了同样的问题。维护以下订单以解决问题。所有get方法语句都是第一个和后来的httpClient方法。

      HttpClient httpClient = new HttpClient();
get = new GetMethod(instanceUrl+usersEndPointUri);
get.setRequestHeader("Content-Type", "application/json");
get.setRequestHeader("Accept", "application/json");

httpClient.getParams().setParameter("http.protocol.single-cookie-header", true);
httpClient.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
httpClient.executeMethod(get);

答案 4 :(得分:2)

我也遇到了同样的错误,并且努力解决它,然后Nagaraja JB的上述回答帮助我修复了它。就我而言:

与以前一样: JSONObject response_json =新的JSONObject(response_data);

将其更改为: JSONArray response_json =新的JSONArray(response_data);

此问题已解决。

答案 5 :(得分:2)

虽然json以“ [”开头,以“]结尾”表示这是Json Array,请改用JSONArray:

JSONArray jsonArray = new JSONArray(JSON);

然后,如果需要,可以将其与List Test Object映射:

ObjectMapper mapper = new ObjectMapper();
List<TestExample> listTest = mapper.readValue(String.valueOf(jsonArray), List.class);

答案 6 :(得分:1)

由于一个小错误,当我试图将List转换为json时,我遇到了类似的问题。 如果List转换为json,它将返回JSONArray而不是JSONObject。

答案 7 :(得分:1)

在我的情况下,我的arraylist用JSONObject告诉我这个错误,但我为我的String对象数组找到了这个解决方案

List<String> listStrings= new ArrayList<String>();
String json = new Gson().toJson(listStrings);
return json;

像棱角分明的魅力 Gson版本2.8.5

答案 8 :(得分:1)

就我而言,json文件编码有问题

我正在vb .net中使用以下命令生成JSON文件: My.Computer.FileSystem.WriteAllText(“ newComponent.json”,json.Trim,False)

我尝试了本文中的所有建议,但没有帮助。

最终在Notepad ++中注意到创建的文件是UTF-8-BOM

不确定如何获取该编码,但是在将编码切换为UTF-8之后,它没有其他更改即可解决。

希望这对某人有帮助。

答案 9 :(得分:1)

我使用的文件是通过Powershell以UTF-8格式保存的。我将其更改为ANSI并解决了该问题。

答案 10 :(得分:1)

这个问题在 JSON 中不会发生。您需要使用 HttpURLConnection 打开 URL 连接。

    HttpURLConnection connection = null;
    try{            
        URL url = new URL("http://www.json-generator.com/j/cglqaRcMSW?indent=4");
        connection =  (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        connection.setRequestProperty("Content-Type","application/json");
        connection.setRequestProperty("Accept","application/json");
        connection.setUseCaches(false);
        connection.setAllowUserInteraction(false);
        connection.connect();
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        StringBuffer stringBuffer = new StringBuffer();
        String output;
        while((output = bufferedReader.readLine()) != null ){
            stringBuffer.append(output);
        }
        bufferedReader.close();
        System.out.println(stringBuffer.toString());
    }
    catch(Exception e){
        System.out.println(e);
    }
    finally{
        if (connection != null) {
        try {
            connection.disconnect();
        }catch (Exception ex) {
            System.out.println("Error");
        }
     }

答案 11 :(得分:0)

您的JSON完全有效。尝试使用这些JSON类来解析它。 http://json.org/java/

答案 12 :(得分:-2)

实际上,我找到了一个简单的答案,Jst将对象添加到String Builder而不是String工作;)

StringBuilder jsonString= new StringBuilder.append("http://www.json-.com/j/cglqaRcMSW?=4");    
JSON json= new JSON(jsonString.toString);