RETROFIT不允许嵌套,数据总是为null

时间:2016-01-24 04:10:43

标签: android ormlite greendao

这是我的Json数据

[
  {
    "id": 1,
    "name": "ANDY",
    "Game": {
      "car": "1 Item",
      "plane": "1 Item"
    },
    "location": {
      "home": 5.555,
      "office": 150.316
    }
  }
}

这是我的调用API:

@GET("/sample.json")
Observable<Response> getAppTours(@Header("If-None-Match") String etag);

我如何访问游戏并获得汽车和车辆?飞机位置:家庭&amp;办公室?

我正在使用Retrofit和Ormlite。当我添加@DATABASEFIELD游戏时,我一直在游戏和位置上出错;

错误说:

Attempt to invoke interface method 'com.j256.ormlite.stmt.QueryBuilder com.j256.ormlite.dao.Dao.queryBuilder()' on a null object reference

2 个答案:

答案 0 :(得分:0)

如果使用核心类库来读取Json,获取嵌套对象很简单。但是使用改造你必须为游戏对象创建另一个POJO(模型)。请简要look

答案 1 :(得分:0)

复制/粘贴此JSON作为此页面的输入http://www.jsonschema2pojo.org/

[
  {
    "id": 1,
    "name": "ANDY",
    "Game": {
      "car": "1 Item",
      "plane": "1 Item"
    },
    "location": {
      "home": 5.555,
      "office": 150.316
    }
  }
]

你有一个}而不是]关闭它,对于biggies。现在将源类型更改为JSON并相应地选择转换器。

您可以在页面底部http://square.github.io/retrofit/查看主要文档中的Retrofit可用转换器。

确保将所需的行添加到您的gradle中,类似于:

Gson: com.squareup.retrofit2:converter-gson
Jackson: com.squareup.retrofit2:converter-jackson
Moshi: com.squareup.retrofit2:converter-moshi
Protobuf: com.squareup.retrofit2:converter-protobuf
Wire: com.squareup.retrofit2:converter-wire

现在从jsonschema2pojo点击“预览”或“Zip”,您就可以下载新模型了。将这些类复制到您的项目中。

您的新Retrofit界面将如下所示:

public interface YourService {
  @GET("your/url")
  Call<Yourclass> listStuff();
}

然后,在那之后,您将能够使用:

发出HTTP请求
Retrofit retrofit = new Retrofit.Builder()
    .baseUrl(API_URL)
    .addConverterFactory(GsonConverterFactory.create()) //Converter
    .build();

// Create an instance of our GitHub API interface.
YourService service = retrofit.create(YourService.class);

// Create a call instance for looking up Retrofit contributors.
Call<Yourclass> call = service.listStuff();

通过以下方式获取您的游戏和位置:

Yourclass myclass = call.execute().body();
Game game = myclass.getGame();
Location location = myclass.getLocation();

如果您想了解更多详情,请查看以下内容:

https://github.com/square/retrofit/blob/master/samples/src/main/java/com/example/retrofit/SimpleService.java

http://square.github.io/retrofit/

https://github.com/joelittlejohn/jsonschema2pojo