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的解决方案,仍然遇到了相同的错误。 可以给我一个解析它的简单解决方案。
答案 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);