当前位置: 首页 > 知识库问答 >
问题:

JSON错误“java.lang.IllegalStateException:应为BEGIN_对象,但在第1行第1列路径$处为字符串”

宰父劲
2023-03-14
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());
    }

这将创建异常

 com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $

非常感谢你的帮助。

共有3个答案

计寒
2023-03-14

最近,我遇到了类似的问题,只能通过在标题部分添加“Accept:application/json”来解决。所以,如果你使用的是翻新2.0;

第一种解决方案:对于post方法,添加如下标题参数;

@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)
        }
    }
}

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

姬坚成
2023-03-14

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

潘弘壮
2023-03-14

让我们看看您收到的错误。

应为BEGIN_对象

JSON是一个对象,所有JSON对象都用大括号({})括起来。因此,BEGIN_对象是{。它在某处期待它。

但是是String

但是他找到了一个字符串“某物”。仍然没有告诉我们在哪里。

在第1行第1列路径$

啊,太好了。在第1行第1列。这是JSON的开头。所以你忘记了把整件事包含在{}中(或者至少你忘记了第一个,但我打赌你已经忘记了它们两个)。

 类似资料: