2017-09-09 3 views
-1

J'utilise json_encode pour créer une chaîne JSON en PHP. $result est mon résultat SQL.Comment envoyer correctement une chaîne JSON depuis PHP et l'analyser en Java pour obtenir POJO?

 $final_op=""; 
     if(empty($result) == false){ 

      $rows = array(); 
      while($r = mysqli_fetch_assoc($result)) { 
       $rows[] = $r; 
      } 
      $final_op=json_encode($rows); 
     } 

quand je reçois cette chaîne JSON à la fin client je reçois comme

[{"username":"vikasdevde","user_fname":"Vikas Devde","user_work":"Programmer"}] 

Et je l'analyse en Java comme ci-dessous

    try{ 

         JSONObject jObject = new JSONObject(response); 
         String aJsonUsername = jObject.getString("username"); 
         String aJsonFname = jObject.getString("user_fname"); 
         String aJsonUserWork = jObject.getString("user_work"); 

        }catch(JSONException e){ 
         e.printStackTrace(); 
         System.out.println("JSON Exception"); 
        } 

Mais je suis d'obtenir un JSONException, peut-être est-ce en raison des crochets autour, parce que, après quelques recherches, j'ai essayé avec une chaîne codée en dur

"{\"username\":\"vikasdevde\",\"user_fname\":\"Vikas Devde\",\"user_work\":\"Programmer\"}" 

et cela a fonctionné. Pourriez-vous s'il vous plaît laissez-moi savoir quelle devrait être la meilleure façon de gérer cela?

+0

Je ne sais pas lire cela en java, mais vous envoyez un tableau. Vous devez l'analyser comme ça dans JAVA. Edit: dans votre code, vous semblez essayer de le lire uniquement en tant qu'objet simple, et non en tant qu'objet de tableau. – FirstOne

+0

Est-il prévu que vous obtiendrez toujours exactement une ligne du jeu de résultats? –

+0

@FirstOne oui c'est ce que je demande ici, il est envoyé en tant que tableau, et je cherche la meilleure façon de gérer cela. –

Répondre

2
JSONArray jsonarray = new JSONArray(response); 
for (int i = 0; i < jsonarray.length(); i++) { 
    JSONObject jsonobject = jsonarray.getJSONObject(i); 
    String username= jsonobject.getString("username"); 
    String user_fname= jsonobject.getString("user_fname"); 
    String user_work= jsonobject.getString("user_work"); 
} 

C'est la bonne façon de procéder.

0

Essayez ceci -

json_encode($rows, JSON_FORCE_OBJECT); 

Pour plus de référence, cochez cette link

0

Essayez de changer votre code java comme celui-ci

JSONArray jsonArray= new JSONArray(response); 
JSONObject jObject=jsonArray.getJSONObject(0); 
String aJsonUsername = jObject.getString("username"); 
String aJsonFname = jObject.getString("user_fname"); 
String aJsonUserWork = jObject.getString("user_work"); 

remplacer le code dans votre bloc try avec ce