web-dev-qa-db-fra.com

Un texte JSONObject doit commencer par '{' à 1 [caractère 2 ligne 1] avec l'erreur '{'

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);

J'ai proposé de nombreuses solutions pour analyser ce lien , obtenant toujours la même erreur en question ..___ Est-ce que n'importe qui peut me donner une solution simple pour l'analyse.

9
Dev-X

Votre problème est que String JSON = "http://www.json-generator.com/j/cglqaRcMSW?indent=4"; n'est pas JSON.
Ce que vous voulez faire, c'est ouvrir une connexion HTTP avec " http://www.json-generator.com/j/cglqaRcMSW?indent=4 " et analyser le JSON réponse.

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

Ne pas ouvrir une connexion au site et récupérer le contenu.

8
Assaf Gamliel

J'ai eu le même problème. Ma réponse Json du serveur avait [ et,]:

[{"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/ dit json valide. vous pouvez le copier et le vérifier.

J'ai corrigé avec le code ci-dessous comme solution temporaire:

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); 
    .....   
}
5
bekur

J'ai eu la même chose, il y avait un caractère de nouvelle ligne vide au début .

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

J'avais un problème similaire en raison d'une petite erreur, lorsque j'essayais de convertir une liste en json . Si une liste est convertie en json, elle retournera JSONArray et non JSONObject.

1
Nagaraja JB

dans mon cas, mon arraylist me jette cette erreur avec JSONObject, mais je finis cette solution pour mon tableau d'objets String

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

Fonctionne comme un charme avec angular Gson version 2.8.5

1
Andres Navarro

J'ai eu le même problème en raison du mauvais ordre des instructions de code. Maintenez l'ordre ci-dessous pour résoudre le problème. Tous obtiennent les déclarations de méthodes en premier et les méthodes httpClient ultérieures.

      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);

Dans mon cas, l'encodage du fichier JSON était un problème

Je générais un fichier JSON au format vb .net avec les éléments suivants:

Et j'ai essayé toutes les suggestions dans ce post mais aucune n'a aidé.

Finalement dans Notepad ++ remarqua que le fichier créé était en UTF-8-BOM

Je ne sais pas comment il a relevé cet encodage, mais après l'avoir basculé sur UTF-8, le problème a été résolu sans autre changement.

J'espère que ça aide quelqu'un.

0
Dinesh

Votre JSON est parfaitement valide. Essayez d’utiliser ces classes JSON pour l’analyser. http://json.org/Java/

0
Daan Luttik