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

and*_*Dev 6 java android json gson

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());
    }
Run Code Online (Sandbox Code Playgroud)

这会创建异常

 com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助.

Ast*_*gat 27

让我们来看看你收到的错误.

预计BEGIN_OBJECT

您的JSON是一个对象,所有JSON对象都用大括号({})括起来.因此BEGIN_OBJECT是{.并且它期待它在某个地方.

但是STRING

但相反,他发现了一个字符串"Something".仍然不告诉我们在哪里.

在第1行第1列路径$

啊,完美.在第1行第1列.这是JSON的开头.所以你忘了将整个事情都包含在{}中(至少你已经忘记了第一个,但我打赌你已经忘记了它们).

  • 请注意,如果它是一个数组,JSON也可以用方括号([])括起来 (3认同)
  • 很好的格式化的优秀解释.+1给你. (2认同)