2016-05-25 5 views
0

私は、ボレーのlibaryで標準JsonObjectRequestを作成しようとしています。要求からの応答を除いてすべてがうまく機能します。ここでAndroidのボレーは私の応答をJsonObjectRequestから変更します

は私がリクエストをやっている方法です:

{ 
"total": 79, 
"results": [ 
{ 
    "id": "123", 
    "title": "test", 
    "distance": 3873.7552258171, 
    "address": { 
    "street": "Street", 
    "zip": "12345", 
    "city": "city", 
    "country": "country", 
    }, 
    "geo": { 
    "longitude": x, 
    "latitude": y 
    } 
}, 

... 
... 

]} 

が、私はこのような何かを得る私のバレーボール要求から:

{ 
"nameValuePairs": { 
"total": 79, 
"results": { 
    "values": [{ 
    "nameValuePairs": { 
    "id": 123, 
    "title": "test", 
    "distance": 3873.7552258171, 
    "address": { 
     "nameValuePairs": { 
     "street": "street", 
     "zip": "zip", 
     "city": "city", 
     "country": "country" 
     } 
    }, 
    "geo": { 
     "nameValuePairs": { 
     "longitude": x, 
     "latitude": y 
     } 
    } 
    }, 

... 
... 

}]}} 

JSONObject jsonObject = new JSONObject(); 
jsonObject.put("geoLong", location.getLongitude()); 
jsonObject.put("geoLat", location.getLatitude()); 

JsonObjectRequest jsonRequest = new JsonObjectRequest(Request.Method.POST, url, 
        jsonObject.toString(), createResponseListener(), createErrorListener()); 
jsonRequest.setRetryPolicy(new DefaultRetryPolicy(15000, 2, 1)); 

requestQueue.add(jsonRequest); 

私は、次のようなJSONレスポンスを期待します

誰もがこのように応答がフォーマットされている理由を知っていますが、どうすれば期待通りに変更できますか?

+0

これはウェブサービスで問題となる必要があります。 –

+0

いいえ私はポストマンのクロムアプリを使ってポストリクエストを作成していません。そこに正しいjsonフォーマットがあります。 Androidスタジオのデバッグコンソールで、間違った形式を取得します。/ – RyuZz

+0

これはAndroidサービスではなくウェブサービスの問題です。 –

答えて

1

私はそれを自分で考え出しました。私は、文字列として第2のアクティビティにJSONを送信し、私はStringにJSONObjectを変更する

new Gson().toJson(response) 

を使用していますし、これはJSON形式を変更しました。 なぜこれが起こったのか分かりませんが、それは問題でした。

+0

ここであなたの質問に言及しましたか?あなたはおそらく可能な限り詳細を追加する必要があります –

+0

私はそれがボレーの問題だと思ったので、私は言及しなかった、申し訳ありません! – RyuZz

0

これを試してください。ポストにパラメータを送信するためにHashMapを使用して、より良く理解するために

HashMap<String,String> params = new HashMap<>(); 
params.put("geoLong", location.getLongitude()); 
params.put("geoLat", location.getLatitude()); 

その後

JsonObjectRequest jsonRequest = new JsonObjectRequest(url, 
        new JSONObject(params), createResponseListener(), createErrorListener()); 

を要求し、私はポストの要求を作っていたと私は期待して私は応答を得るとき、私はこれを使用し、このコードスニペットを調べます。

JsonObjectRequest req = new JsonObjectRequest(URL, new JSONObject(params), 
     new Response.Listener<JSONObject>() { 
      @Override 
      public void onResponse(JSONObject response) { 
       try { 
        VolleyLog.v("Response:%n %s", response.toString(4)); 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       VolleyLog.e("Error: ", error.getMessage()); 
      } 
     }); 
+0

HashMapを使用しても、 nameValueParis "属性をjsonレスポンスに追加します。 – RyuZz

+0

JsonObjectRequestに '' 'Request.Method.POST'''を追加する必要はありません。それをJsonObjectRequestのパラメータから削除してみてください。 –

+0

ハッシュマップを使用 –

関連する問題