在rerofit我coundn't打印JSON
在这段代码中我将发送ID和mobile_no它检索我的用户平衡,但它不能在Toast
打印。在rerofit我coundn't打印JSON
什么我缺少正确这里我的工作,但我没有得到响应串
private void Get_Wallet_Amount() {
Call<ResponseBody> call = AppController.getInstance().getApiInterface().getWalle_Data(Utils.getSharedPreference(getApplicationContext()).getString(Const.PREFERENCE_USER_ID,""),
Utils.getSharedPreference(getApplicationContext()).getString(Const.PREFERENCE_MOBILE_NUMBER,""));
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
String responseString = null;
try {
Toast.makeText(Proceed_PaymentActivity.this, "HI", Toast.LENGTH_SHORT).show();
responseString = response.body().string();
JSONObject jsonObject = new JSONObject(responseString);
//It doesn't print output
Toast.makeText(Proceed_PaymentActivity.this, ""+jsonObject.getString("wallet_amt"), Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Toast.makeText(Proceed_PaymentActivity.this, "Error", Toast.LENGTH_SHORT).show();
}
});
}
更新接口
@FormUrlEncoded
@POST("XXXX")
Call<ResponseBody> getWalle_Data(@Field("id") String uid,@Field("mobile") String mobile);
我的JSON输出
[
{
"wallet_amt": 50
}
]
错误的logcat org.json.JSONException:值[{ “wallet_amt”:50}]类型org.json.JSONArray的不能转换到的JSONObject 10-13 12时39分:37.793 28522-28522/abc.example.com.rechargeappdesugn W/System.err:at org.json.JSON.typeMismatch(JSON.java:111) 10-13 12:39:37.793 28522-28522/abc.example .com.rechargeappdesugn W/System.err:at org.json.JSONObject。(JSONObject.java:160) 10-13 12:39:37.793 28522-28522/abc.example.com.rechargeappdesugn W/System.err:在org.json.JSONObject。(JSONObject.java:173) 12月10日至一十三日:39:37.793 28522-28522/abc.example.com.rechargeappdesugn W/System.err的:在abc.example.com.rechargeappdesugn.activity.Proceed_PaymentActivity $ 1.onResponse(Proceed_PaymentActivity.java:97) 10 -13 12:39:37.793 28522-28522/abc.example.com.rechargeappdesugn W/System.err的:在retrofit2.ExecutorCallAdapterFactory $ ExecutorCallbackCall $ 1 $ 1.run(ExecutorCallAdapterFactory.java:68) 十二月10日至13日:39:37.793 28522-28522/abc.example.com.rechargeappdesugn W/System.err:at android.os.Handler.handleCallback(Handler.java:751) 10-13 12:39:37.793 28522-28522/abc.example.com .rechargeappdesugn W/System.err的:在android.os.Handler.dispatchMessage(Handler.java:95) 十二月10日至13日:39:37.793 28522-28522/abc.example.com.rechargeappdesugn W/System.err的:在android.os.Looper.loop(Looper.java:154) 10-13 12:39:37.793 28522-28522/abc.example.com.rechargeappd esugn W/System.err:at android.app.ActivityThread.main(ActivityThread.java:6119) 10-13 12:39:37.793 28522-28522/abc.example.com.rechargeappdesugn W/System.err:at java .lang.reflect.Method.invoke(本机方法) 十二月10日至13日:39:37.793 28522-28522/abc.example.com.rechargeappdesugn W/System.err的:在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller .RUN(ZygoteInit.java:886) 一十二月10日至13日:39:37.794 28522-28522/abc.example.com.rechargeappdesugn W/System.err的:在com.android.internal.os.ZygoteInit.main(ZygoteInit。 java:776)
您的json
是JSONArray
。
在代码中使用JSONArray jsonArray = new JSONArray(responseString);
。
您必须使用getString()而不是opString()。
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
String responseString = null;
try {
Toast.makeText(Proceed_PaymentActivity.this, "HI", Toast.LENGTH_SHORT).show();
responseString = response.body().string();
// edited here
JSONArray jsonArray = new JSONArray(responseString);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String wallet_amt = jsonObject.String("wallet_amt");
Toast.makeText(Proceed_PaymentActivity.this, wallet_amt, Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
responseString = response.body()。string(); JSONArray jsonArray = new JSONArray(responseString); JSONObject jsonObject = jsonArray.getJSONObject(0); //这里我得到一个值为0或null它没有显示任何东西Utils.getSharedPreference(getApplicationContext())。edit()。putString(Const.PREFERENCE_Walllet_Amt,jsonObject.optString(“wallet_amt”)); –
首先你不需要做相关回应任何数据操作的改装在内部处理这个的。 请使用下面的代码片段来使它工作。
class Wallet {
@SerializedName("wallet_amt")
private Long amount;
}
Call<List<Wallet>> call = AppController.getInstance().getApiInterface().getWalle_Data(Utils.getSharedPreference(getApplicationContext()).getString(Const.PREFERENCE_USER_ID,""),
Utils.getSharedPreference(getApplicationContext()).getString(Const.PREFERENCE_MOBILE_NUMBER,""));
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<List<Wallet>> call, Response<List<Wallet>> response) {
String responseString = null;
try {
} catch (JSONException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<List<Wallet>> call, Throwable t) {
Toast.makeText(Proceed_PaymentActivity.this, "Error", Toast.LENGTH_SHORT).show();
}
});
它抛出JsonParsingException。检查你的logcat – Kuls
是否有任何错误消息/异常抛出? –