这是我的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
答案 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();
如果您想了解更多详情,请查看以下内容: