2016-04-14 8 views
0

から働いていません。しかし、私はアプリから投稿するとき、唯一のテーブルおよび原価対象は、掲載されます。ここでJSONArrayポストはそれが</p> <p><a href="https://i.stack.imgur.com/SvkK4.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/SvkK4.jpg" alt="Postman Screenshot"></a></p> <p>を完全に正常に動作し、私はポストマンを使用してみましたAndroidアプリ

これはポストマン、

{ 
"_id": "570faed422ed0203002723c8", 
"cost": 200, 
"table": 20, 
"__v": 0, 
"serve": [ 
    { 
    "food": "56fac73f284ea80300ba6b42", 
    "quan": 4, 
    "status": 0, 
    "_id": "570faed422ed0203002723c9" 
    }, 
    { 
    "food": "56fac6d0284ea80300ba6b41", 
    "quan": 3, 
    "status": 0, 
    "_id": "570faed422ed0203002723ca" 
    } 
] 
} 

public void postDataVolley(final String requestType, String url,JSONObject sendObj){ 
    try { 
     queue = Volley.newRequestQueue(mContext); 

     JsonObjectRequest jsonObj = new JsonObjectRequest(url,sendObj, new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject response) { 
       if(mResultCallback != null) 
        mResultCallback.notifySuccess(requestType,response); 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       if(mResultCallback != null) 
        mResultCallback.notifyError(requestType,error); 
      } 

     }) 
     { 
      @Override 
      public Map<String, String> getHeaders() throws AuthFailureError { 
       HashMap<String, String> headers = new HashMap<>(); 
       headers.put("x-access-token", token); 


       return headers; 
      } 



     }; 

     queue.add(jsonObj); 

    }catch(Exception e){ 

    } 
} 
を投稿するために使用されるこの関数からのAndroidアプリから出力

{ 
"_id": "570fc02422ed0203002723d2", 
"cost": 60, 
"table": 1, 
"__v": 0, 
"serve": [] 
} 

である私のAndroidのコード

JSONObject sendObj = null; 

      sendObj = new JSONObject(); 
      try { 
       sendObj.put("table",mTableUser); 
       sendObj.put("cost",cost); 

       for(int i=0;i<mOrderFoodList.size();i++) { 

        sendObj.put("serve["+i+"][food]",mOrderFoodList.get(i).getID()); 
        sendObj.put("serve["+i+"][number]",mOrderFoodList.get(i).getQuantity()); 
        sendObj.put("serve["+i+"][status]", 0); 

       } 


      }catch (JSONException e) { 
       e.printStackTrace(); 
      } 
mVolleyService.postDataVolley("POSTCALL", mConstants.BASE_URL +mConstants.ORDER, sendObj); 

です

JSONObjectを送信する際に間違いがありますか?

+1

は多分mOrderFoodListは空ですか? – Pooya

+0

いいえ空ではないログをチェックインしました:( – MrRobot9

+0

@ArjunHegdeデータの送信に使用されたコード全体を表示できますか? –

答えて

0

serveJSONArrayを作成する必要があります。各サービスに対してJSONObjectを作成し、JSONArrayに入れます。

このコードを試してみてください

JSONObject sendObj = new JSONObject(); 
try { 
    sendObj.put("table",mTableUser); 
    sendObj.put("cost",cost); 

    JSONArray serveArray = new JSONArray(); 
    for(int i=0; i<mOrderFoodList.size(); i++) { 
     JSONObject singleServe = new JSONObject(); 
     singleServe.put("food",mOrderFoodList.get(i).getID()); 
     singleServe.put("number",mOrderFoodList.get(i).getQuantity()); 
     singleServe.put("status", 0); 
     serveArray.putJSONObject(singleServe); 
    } 
    sendObj.putJSONArray(serveArray); 

} catch (JSONException e) { 
    e.printStackTrace(); 
} 
関連する問題

 関連する問題