我想从JSON中获取一些数据,但gson给出了错误。我想知道如何解决这个问题?
我使用的是dagger2(这部分100%正常工作)和rxJava(这部分总是调用onError方法)。
我的型号:
@Data
@NoArgsConstructor
public class GradeModel {
//I'm using lombok to generate getters and setters.
@SerializedName("grade")
@Expose
private DecimalFormat grades;
@SerializedName("grades")
@Expose
private GradeModel listGrades;
private String matter;
private int fault;
}
我的JSON:
grades: [
{
"class": "math"
"grade": 4.5,
"next_dates":[
{
"exam": "03/03/2017",
"homework": "03/03/2017"
}
]
}
{
"class": "port"
"grade": 8,
"next_dates":[
{
"exam": "03/05/2017",
"homework": "03/03/2017"
}
]
}
]
我的回应:
public class GradeResponse {
@Inject
Retrofit retrofit;
@Inject
MainPresenter mainPresenter;
public void getGradeRx() {
MyApplication.getMainComponent().injectIntoGradeResponse(this);// informando ao dagger sobre o uso de um component e a necessidade de injetar dependência
Subscription getGrade = retrofit
.create(GradeService.class)
.getGrade()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.map(model -> {
// transform model
return model.getListGrades();
})
.subscribe(new Observer<GradeModel>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
Log.i(TAG, "saporra vai me matar ainda");
}
@Override
public void onNext(GradeModel grades) {
Log.i(TAG, "caralhoooooo " + grades.getGrades());
//mainPresenter.setListGrades(grades);
}
});
}
}
我的改装:
@Module
public class RetrofitModule {
@Provides
@PerActivity
Gson provideGson() {
GsonBuilder gsonBuilder = new GsonBuilder();
//gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES);
return gsonBuilder.create();
}
@Provides
@PerActivity
public OkHttpClient provideHttpClient() {
return new OkHttpClient().newBuilder().build();
}
@Provides
@PerActivity
public Retrofit provideRetrofit(Gson gson, OkHttpClient okHttpClient) {
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create(gson))
.baseUrl(BASE_URL)
.client(okHttpClient)
//converts Retrofit response into Observable
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
return retrofit;
}
}
我的服务:
public interface GradeService {
@GET("grades_json.json")
Observable<GradeModel> getGrade();
}
错误:
com.google.gson.stream.MalformedJsonException:使用JsonReader.setLenient(true)在第1行接受格式错误的JSON第1列路径$
1)等级:[
不是有效JSON的一部分。如果要解析JSON数组,请删除等级:
并留下[
。
那么,您的Gson模型就错了。您有“等级”和“等级”,而不是“等级”、“下一个日期”和“类别”。
这也是两个对象。
{ // One Object here
"class": "math",
"grade": 4.5,
"next_dates":[
{ // Second object here
"exam": "03/03/2017",
"homework": "03/03/2017"
}
]
}
因此,您的Java类应该是
public class GradeDate {
private String exam, homework;
}
public class GradeModel {
private String class;
private Double grade;
private List<GradeDate> nextDates;
}
然后,JSON仍然缺少一些逗号来分隔外部数组中的值。
如何使用RxJava和Kotlin中的改型创建api调用的泛型类? 我的JAVA实现是:: 首先添加Gradle依赖项:(更新到最新版本(如果可用)) //用于改装 实现“com.squareup.reverfit2:reverfit:2.3.0” 实现“com.squareup.reverfit2:converter-gson:2.3.0” //对于拦截器实现“com.squareup.okht
首先,如果我对Rxjava的理解有错,请告诉我。 既然我们已经使用API查询使用referfit过滤了数据,那么对已经获得的数据进行操作有什么需要 为什么在RXJava中使用客户接口对象?因此,我们将其用于观察者或onNext()的位置。 Rxjava是否也有助于检索目的,或者它只是对已经获得的数据进行操作?
我试图从JsonData将AdMob ID输入我的应用程序,以便将来可以更改它。 我的愿景: JSON文件将被上传到我的服务器,它的链接将在应用程序内。在json文件中找到的AdMob ID应在应用adUnitID中使用。到目前为止,我做了这个: 这是我的json文件: 问题是,它不仅不起作用,还会导致我的应用程序崩溃,并出现以下错误: 编辑:新日志: 我的片段完整代码: 任何帮助将不胜感激,谢谢
问题内容: 我想使用Javascript 解析此内容。数据如下所示: 在线上的每个教程都教您如何使用Twitter解析JSON,但是我不太确定如何使用JSON解析。 我想在一个网站上进行设置,以查看NFL团队在一个有趣的项目中获得的分数,以及有关解析JSON的良好学习体验,因为我不太在乎Twitter的东西。 这可能吗?有什么好的入门教程吗?甚至一些起始代码? 问题答案: 一般来说,您可以使用 J
在网络请求中使用和有什么好处。我见过许多使用的示例,但我想明白为什么。 示例情形: 为每个工作单元创建一个新线程。将使用线程池 但这种争论对应用程序有什么影响呢?还有哪些方面?
我试图解决这个错误,但我做不到。 运行时得到的错误 09-03 07:45:34.436 602-6020/fyp.hotelreservationsystemver2 e/recyclerview:没有连接适配器;跳过布局09-03 07:45:34.465 602-6020/fyp.hotelreservationsystemver2 D/reservationmainactivity:[{“