2017-09-09 2 views
-1

json_encodeを使用して、PHPでJSON文字列を作成しています。 $resultは私のSQL結果です。PHPからJSON文字列を正しく送信してJavaで解析してPOJOを取得するにはどうすればいいですか?

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

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

私はクライアント側でこのJSON文字列を取得するとき、私は

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

のようにそれを取得し、私は

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

次のようにJavaでそれを解析しています。しかし、私は取得していますいくつかの研究の後、私はハードコードされた文字列で試したので、JSONExceptionは、大括弧で囲まれている可能性があります。

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

となりました。これを処理するにはどうすればいいのか教えてください。

+0

であなたのtryブロック内のコードを置き換え、この

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

のようなJavaコードを変更してみてください。あなたはJAVAのように解析する必要があります。編集:あなたのコードでは、配列オブジェクトではなく、単純なオブジェクトとしてのみ読み取ろうとしているようです。 – FirstOne

+0

結果セットから常に正確に1つの行が得られることが期待されますか? –

+0

@FirstOneはい、私がここで求めているのは、配列として送信されており、これを処理する最善の方法を探しています。 –

答えて

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

をご確認ください。

0

これを試してみてください -

json_encode($rows, JSON_FORCE_OBJECT); 

は、複数の基準については、行くための正しい方法である。このlink

0

は、私はJavaでこれを読んでする方法を知りませんが、あなたは配列を送信している。この

関連する問題