简体   繁体   English

预期为BEGIN_OBJECT,但位于第13行第1列的路径$ STRING

[英]Expected BEGIN_OBJECT but was STRING at line 13 column 1 path $

I saw this issue many times, but still can't understand. 我已经多次看到此问题,但仍然无法理解。 It looks like I send request on site and it's body isn't correct. 好像我在现场发送请求,但它的正文不正确。 But why? 但为什么? May be I don't understand clearly how retrofit works, but do not I just collect a link for the request and wait for the answer from the server? 可能是我不太清楚改造的工作原理,但是我是否不只是收集请求的链接并等待服务器的答复? Here is the link: here 这里是链接: 这里

An interface with request 带请求的接口

public interface NService {
    @GET("/computers?p=2")
    Call<Model> getItems();
}

and class with base URL 并使用基本网址进行分类

public class APIUtils {

    public static final String BASE_URL = "http://testwork.nsd.naumen.ru/rest/";

    public static NService getMService() {
        return RetrofitClient.getClient(BASE_URL).create(NService.class);
    }
}

retrofit build class 改建类

public class RetrofitClient {

    private static Retrofit retrofit = null;


    public static Retrofit getClient(String baseURL) {
        if (retrofit==null) {
            Gson gson = new GsonBuilder()
                    .setLenient()
                    .create();
            retrofit = new Retrofit.Builder()
                    .baseUrl(baseURL)
                    .addConverterFactory(GsonConverterFactory.create(gson))
                    .build();
        }
        return retrofit;
    }
}

JSON were parsed though this JSON解析了,虽然

and MainActivity is: MainActivity是:

public class MainActivity extends AppCompatActivity {
    private List<Item> responseModel;
    private NService mService;
    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d("testcrap", "before loading set");
        setContentView(R.layout.activity_main);
        mService = APIUtils.getMService(); // Строим retrofit объект, собираем ссылку
        Log.d("testcrap", "before loading");
        loadSomeCrap();
        Log.d("testcrap", "after loading");
    }

    public void loadSomeCrap() {
        Log.d("testcrap", "started parsing");
        mService.getItems().enqueue(new Callback<Model>() {

            @Override
            public void onResponse(Call<Model> call, Response<Model> response) {
                Log.d("testcrap", "started onResponse");

                if(response.isSuccessful()) {
                    Log.d("testcrap", "posts loaded from API");
                }else {
                    Log.d("testcrap", "posts not loaded from API");
                }
            }

            @Override
            public void onFailure(Call<Model> call, Throwable t) {
                //showErrorMes  sage();
                Log.d("testcrap", t.toString());

            }
        });
    }
}

Log: 日志:

before loading set
before loading
started parsing
after loading
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 13 column 1 path $

So, if it's wrong request, what should I change for normal work? 因此,如果请求错误,对于正常工作我应该更改什么?

Your API or JSON response is returning JSON_OBJECT but you are getting it in String so this JsonSyntaxException is shown you. 您的API或JSON响应返回JSON_OBJECT,但您通过String获取它,因此向您显示此JsonSyntaxException。 Try to fetch response in OBJECT. 尝试获取对象中的响应。

Make these changes .. 进行这些更改..

BASE_URL = "http://testwork.nsd.naumen.ru/"

And then on interface .. 然后在界面上..

@GET("rest/computers?p=2")
.............

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Gson错误预期为begin_object,但在第1行第1列路径$处为字符串 - Gson error expected begin_object but was string at line 1 column 1 path $ 需要一个字符串,但在第 3 行第 4 列路径 $.SUCCESS 处为 BEGIN_OBJECT - Expected a string but was BEGIN_OBJECT at line 3 column 4 path $.SUCCESS Gson:预期为字符串,但在第 1 行第 3 列路径 $[0] 处为 BEGIN_OBJECT - Gson: Expected a string but was BEGIN_OBJECT at line 1 column 3 path $[0] 预期为 BEGIN_OBJECT,但在第 4 行第 1 列路径 $ - Expected BEGIN_OBJECT but was STRING at line 4 column 1 path $ 预期为BEGIN_OBJECT,但在第1行第13列为BEGIN_ARRAY - Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 13 预期为BEGIN_OBJECT,但在第1行第6列处为STRING - Expected BEGIN_OBJECT but was STRING at line 1 column 6 “应为 BEGIN_OBJECT 但在第 1 行第 1 列为 STRING” - "Expected BEGIN_OBJECT but was STRING at line 1 column 1" 预期为BEGIN_ARRAY,但位于第1行第2列路径的BEGIN_OBJECT $ - Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path$ 应该是BEGIN_ARRAY,但在第1行第2列路径$处是BEGIN_OBJECT吗? - Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $? JsonSyntaxException:java.lang.IllegalStateException:应为 BEGIN_OBJECT,但在第 1 行第 3 列路径 $[0] 处为字符串 - JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 3 path $[0]
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM