相关疑难解决方法(0)

如何在不使用GSON或android中的任何其他库的情况下使用retrofit获取响应

我想从以下Api得到回应:

https://api.github.com/users/username

但我不知道如何获得响应,String以便我可以使用String解析并得到JSONObject.

使用的改装版本:

改造:2.0.0-β1

我一直试过这个:

public interface GitHubService {
        @GET("/users/{user}")
        public String listRepos(@Path("user") String user,Callback<String> callback);
    }
Run Code Online (Sandbox Code Playgroud)

检索:

GitHubService service = retrofit.create(GitHubService.class);
        service.listRepos("username", new Callback<String>() {
            @Override
            public void onResponse(Response response) {
                System.out.println(response.toString());
            }

            @Override
            public void onFailure(Throwable t) {

            }
        });
Run Code Online (Sandbox Code Playgroud)

例外:

Caused by: java.lang.IllegalArgumentException: Could not locate call adapter for class java.lang.String. Tried:
    * retrofit.ExecutorCallAdapterFactory
            at retrofit.Utils.resolveCallAdapter(Utils.java:67)
            at retrofit.MethodHandler.createCallAdapter(MethodHandler.java:49)
Run Code Online (Sandbox Code Playgroud)

任何帮助将非常感激.

parsing android json retrofit

98
推荐指数
1
解决办法
9万
查看次数

使用Retrofit时手动解析部分响应

我正在使用一个REST API,它返回一个JSON文档,该文档以如下方式开始,并包含一个带有字符串ID(如"ABC")的项目的"集合".注意"routes"字段,它包含一系列名为"ABC","ABD","ABE"等的字段,但是路由在json中没有表示为数组,所以所有这些

{
"status":true,
"page":1,
"per_page":500,
"total_count":1234,
"total_pages":8,
"total_on_page":500,
"routes":{
    "ABC":[
    {
        "value":22313,
        <......>
Run Code Online (Sandbox Code Playgroud)

我正在使用Retrofit,问题是routes字段不是一个数组(尽管事实上它确实是这样)并且Retrofit/Gson要求我为具有字段变量abc,abd等的路由创建一个模型对象 - 这不是实际的数据变化.由于各种原因,更改服务器API很难,所以我希望在Android客户端上解决这个问题.

我认为这些是选项:

  • 在它到达Gson之前拦截JSON文档并调整文档,可能使用自定义的Gson解析器,或者拦截HTTP响应.

  • 绕过JSON解析,并从Retrofit获取JSON文档(我还没弄清楚如何执行此操作,或者是否可以)

  • 使用我不知道的Retrofit的一些功能将字段名称映射到集合.

我很感激帮助,特别是如果有一种快速简便的方法来解决这个问题.

android json gson retrofit

7
推荐指数
1
解决办法
6565
查看次数

标签 统计

android ×2

json ×2

retrofit ×2

gson ×1

parsing ×1