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);
このリンク を解析するための多くのソリューションを紹介しましたが、問題の同じエラーがまだ発生しています。それを解析するための簡単なソリューションを教えてもらえますか?.
あなたの問題はString JSON = "http://www.json-generator.com/j/cglqaRcMSW?indent=4";
はJSON
ではありません。
やりたいことは、「 http://www.json-generator.com/j/cglqaRcMSW?indent=4 」へのHTTP
接続を開くことですJSONresponseを解析します。
String JSON = "http://www.json-generator.com/j/cglqaRcMSW?indent=4";
JSONObject jsonObject = new JSONObject(JSON); // <-- Problem here!
サイトへの接続を開いてコンテンツを取得しません。
同じ問題がありました。サーバーからの私の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);
.....
}
私は同じを持っていた、最初に空の改行文字がありました。それはそれを解決しました:
int i = result.indexOf("{");
result = result.substring(i);
JSONObject json = new JSONObject(result.trim());
System.out.println(json.toString(4));
私の場合、jsonファイルのエンコーディングが問題でした
次のようにvb .netでJSONファイルを生成していました:My.Computer.FileSystem.WriteAllText( "newComponent.json"、json.Trim、False)
そして、私はこの投稿のすべての提案を試みましたが、誰も助けませんでした。
最終的にNotepad ++では、作成されたファイルがUTF-8-BOMであることに気づきました
どのようにエンコードを選択したかはわかりませんが、エンコードをUTF-8に切り替えた後、他の変更なしで解決しました。
これが誰かを助けることを願っています。
私は同じエラーがあり、それを修正するのに苦労しました。そして、Nagaraja JBによる上記の答えは、私がそれを修正するのを助けました。私の場合:
以前:JSONObject response_json = new JSONObject(response_data);
変更後:JSONArray response_json = new JSONArray(response_data);
これで修正されました。
コードステートメントの順序が間違っているため、同じ問題が発生しました。問題を解決するには、以下の順序を維持してください。すべての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);
リストをjsonに変換しようとしていたときに、小さな間違いが原因で同様の問題が発生しました。リストがjsonに変換される場合、JSONObjectではなくJSONArrayを返します。
私の場合、arraylistはJSONObjectでそのエラーをスローしますが、Stringオブジェクトの配列のためにこのソリューションをフィンします
List<String> listStrings= new ArrayList<String>();
String json = new Gson().toJson(listStrings);
return json;
angular Gsonバージョン2.8.5でチャームのように動作します
JSONは「[」で始まり「]」で終わるため、これはJSON配列であることを意味しますが、代わりにJSONArrayを使用してください。
JSONArray jsonArray = new JSONArray(JSON);
必要に応じて、リストテストオブジェクトでマップできます。
ObjectMapper mapper = new ObjectMapper();
List<TestExample> listTest = mapper.readValue(String.valueOf(jsonArray), List.class);
JSONは完全に有効です。これらのJSONクラスを使用して解析してみてください。 http://json.org/Java/