com.google.gson.stream.MalformedJsonException:使用JsonReader.setLenient(true)在第2行第2列路径$接受格式错误的JSON

时间:2019-12-26 05:31:41

标签: android api android-volley malformed

在登录期间我遇到此错误,如果您知道任何解决方案,请不要降级,请指导我。我还检查了不同的堆栈溢出后的帖子,但他们都在谈论修剪字符串或其他解决方案,但我无法解决。我使用排球。

我的Json文件:-

{
  "error": false,
  "user": [
    {
      "user_id": "123",
      "customer_name": "Abc",
      "email": "abc@example.com",
      "salt": "123abc",
      "phone": "1234567890",
      "address": "Enter Address",
      "postal_code": "1234"
    }
  ]
}

这是我的Java类:-

@Override
    protected String doInBackground(Boolean... booleen) {
        ExampleApi exampleApi = new ExampleApi();
        LoginUser result;
        try {
            result = exampleApi.loginPost(sharedPreferences.getString("abc_id", ""), semail, fcmToken, spassword);
            Gson gson = new Gson();                           
            String json = gson.toJson(result);
            JSONObject jObj = new JSONObject(json);
            Log.e("result1", String.valueOf(jObj));
            if (jObj.getString("error").equalsIgnoreCase("false")) {
                JSONArray jsonArray = jObj.getJSONArray("user");
                JSONObject jsonObject1 = jsonArray.getJSONObject(0);
                 return "true";
                 }else {
                String errormsg = jObj.getString("error_msg");
                return errormsg;
            }
            } catch (ApiException e) {
            e.printStackTrace();
            Log.e("error", e.toString());
        } catch (JSONException e) {
            e.printStackTrace();
            }
            }

2 个答案:

答案 0 :(得分:0)

您可以尝试如下初始化Gson

Gson gson = new GsonBuilder()
        .setLenient()
        .create();
  

预期的JSON中可能存在问题。

答案 1 :(得分:0)

检查user对象(user_id, customer_name. etc)的属性是否采用与接收到的对象相同的正确格式。

ps:如果user_idInteger对象中的user,它也应该是Integer