Saq*_*med 6 java android json retrofit2
您好我正在Android使用retrofitAPI从服务器获取响应的应用程序.Retrofit自动解析json响应并创建POJO类的对象.我将json存储到sqlite中,如果没有连接互联网,请从sqllite调用json,面临困难必须手动解析json.
有没有什么方法我使用改造库解析json并从json字符串或文件路径生成pojo?我的代码在这里从url获取:
@FormUrlEncoded
@POST("getResponse")
Observable<UserResponse> getResponse(@Field("token") String token);
Run Code Online (Sandbox Code Playgroud)
如果没有连接互联网,我想要这样的东西.
@FromStringEncoded
Observable<UserResponse> getResponseOffline(@Field("token") String token);
Run Code Online (Sandbox Code Playgroud)
谢谢.
简单地使用Google's GSON图书馆,让你转换json到POJO,反之亦然.取json从sqlite使用解析它gson.
Gson gson=new Gson();
UserResponse userResponse= gson.fromJson(jsonInStringFromDb,UserResponse.class);
Run Code Online (Sandbox Code Playgroud)
您也可以JSON使用来解析文件Gson.
JSON到Java对象,从文件中读取它.
Gson gson = new Gson();
Staff staff = gson.fromJson(new FileReader("D:\\file.json"), Staff.class);
Run Code Online (Sandbox Code Playgroud)
你没有提到建议.当真正的服务器还没有工作时,我在开发的早期阶段使用以下解决方案在应用程序中模拟服务器.
所以你可以在OkHttp中使用拦截器.像这样:
OkHttpClient.Builder builder = new OkHttpClient.Builder();
builder.addInterceptor(new MockClient(context));
Run Code Online (Sandbox Code Playgroud)
和MockClient看起来像这样:
public class MockClient implements Interceptor {
Context context;
public MockClient(Context context) {
this.context = context;
}
@Override
public Response intercept(Chain chain) throws IOException {
HttpUrl url = chain.request().url();
//here determine what to do base on url.
//e.g.:
switch(url.encodedPath()) {
case "some/path" :
String response = readJsonFieleFromAssestOrAnyOtherStorage();
return new Response.Builder()
.code(200)
.message(response)
.request(chain.request())
.protocol(Protocol.HTTP_1_1)
.body(ResponseBody.create(MediaType.parse("application/json"), response.getBytes()))
.addHeader("content-type", "application/json")
.build();
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4740 次 |
| 最近记录: |