JSON错误" java.lang.IllegalStateException:预期为BEGIN_OBJECT,但在第1行第1行路径为STRING"

时间:2015-07-15 07:45:13

标签: java android json gson

    Thread thread = new Thread(delegate()
    {
         this.Invoke(new Action(() => {GeckoBrowser.Navigate("http://www.google.com/");}));
    });

这会创建例外

public interface UserService {
    @POST(Constants.Api.URL_REGISTRATION)
    @FormUrlEncoded
    BaseWrapper registerUser(@Field("first_name") String firstname, @Field("last_name") String lastname, @Field("regNumber") String phone, @Field("regRole") int role);


 public BaseWrapper registerUser(User user) {
        return getUserService().registerUser(user.getFirstName(), user.getLastName(), user.getPhone(), user.getRole());
    }

非常感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

清理和重建项目对我来说很有效。

答案 1 :(得分:1)

最近我遇到了类似的问题,只能通过将 "Accept: application/json" 添加到标题部分来解决。因此,如果您使用的是改造 2.0;

第一个解决方案:对于 post 方法添加如下的 headers 参数;

@Headers({"Accept: application/json"})
@POST(Constants.Api.URL_REGISTRATION)
@FormUrlEncoded
BaseWrapper registerUser(@Field("first_name") String firstname, 
                         @Field("last_name") String lastname, 
                         @Field("regNumber") String phone, 
                         @Field("regRole") int role);

第二个解决方案:像这样将标头添加到拦截器类中;

注意:代码在 kotlin 中

private fun getInterceptor(): Interceptor {
        try {
            return Interceptor {
                val request = it.request()
                it.proceed(
                    request.newBuilder()
                        .header("Accept", "application/json")
                        .header("Authorization", "$accessTokenType $accessToken")
                        .build()
                )
            }
        } catch (exception: Exception) {
            throw Exception(exception.message)
        }
    }
}

希望它有所帮助,快乐编码:)

答案 2 :(得分:0)

如果要在json对象中添加ArrayList并在GSON中进行解析,请确保ArrayList如下所示。

ArrayList<JSONObject>

代替

ArrayList<String>

并像这样解析。

ArrayList<JSONObject> mItem = new ArrayList<JSONObject>();
mItem.add(jsonObject);

// and Use like this.
JSONArray list = new JSONArray(mItem);
jsonObject.put("Item",list);

答案 3 :(得分:-2)

清理并重建项目 这是由于Gson文件混乱造成的。