Tag: gson

使用GSON的Json的Kotlin数据类

我有一个JSON像这样: "topic": { "id": 3, "name": "Variables declaration", "image": "xxx.xxx.xxx", "description": "Variable declaration is basically booking memory for data being used in program" } 我有一个Kotlin数据类像这样 data class Topic(val id: Long, val name: String, val image: String, val description: String) 但我想不出一种方法来序列化/反序列化data class <-> Json像我们以前用java POJO <-> Json做的java POJO <-> Json使用GSON这样 @SerializedName("id") long id; @SerializedName("name") String name; […]

尝试从字符串创建JSON对象时出现错误“无法转换为JSON”

我在GSON库中使用Koltin语言来创建/解析JSON。 我有以下代表JSON对象的字符串 val jsonString = "{ \"age\": 22, \"height\" : 1.8, \"profession\":\"Student\", \"at_room\": false, \"gender\": \"male\",\"pictures\": []}" 当我尝试将此字符串转换为JSON对象时, val jsonData = JsonParser().parse(jsonString).asJsonObject 我得到以下错误: [] can not be converted to JSON 我猜这个错误是由于pictures是JSONArray而不是原始类型的事实。 无论如何,我想知道如何正确地将此字符串转换为JSON对象。

GSON – 将字符串转换为JsonArray

我想将一个字符串转换成JsonArray。 到目前为止,我试图做到以下几点: Gson().toJson(string) Gson().toJsonTree(string) 都抛出一个异常,说这个参数不是JsonArray。 这是字符串,你可以看到它是一个JsonArray: "[{\"match\":{\"id\":92757102,\"tournament_id\":3666234,\"state\":\"open\",\"player1_id\":58602461,\"player2_id\":58602459,\"player1_prereq_match_id\":null,\"player2_prereq_match_id\":null,\"player1_is_prereq_match_loser\":false,\"player2_is_prereq_match_loser\":false,\"winner_id\":null,\"loser_id\":null,\"started_at\":\"2017-07-17T19:10:07.588-04:00\",\"created_at\":\"2017-07-17T19:10:07.476-04:00\",\"updated_at\":\"2017-07-17T19:10:07.588-04:00\",\"identifier\":\"A\",\"has_attachment\":false,\"round\":1,\"player1_votes\":null,\"player2_votes\":null,\"group_id\":null,\"attachment_count\":null,\"scheduled_time\":null,\"location\":null,\"underway_at\":null,\"optional\":false,\"rushb_id\":null,\"completed_at\":null,\"suggested_play_order\":1,\"prerequisite_match_ids_csv\":\"\",\"scores_csv\":\"\"}}]"

IncompleteAnnotationException:dagger.提供缺少的元素类型

当我添加下面的代码时出现错误: @Singleton @Provides fun provideGson() : Gson { return Gson() } 我真的不知道为什么。

Retrofit2标量转换器不转换之前gson转换器android

我在Android中使用标量转换器工厂以及gson转换器之后进行了以下改进,但是当我调用字符串调用时,响应以字符串的形式出现,它给了我“不是JSON对象:”成功的例外。 我错过了什么? 改造创造: Retrofit retrofit = new Retrofit.Builder() .addConverterFactory(ScalarsConverterFactory.create()) .addConverterFactory(GsonConverterFactory.create(gson)) .baseUrl(IPService.END) .client(new OkHttpClient.Builder().build()) .build(); 创建电话: @POST("/friends/sendRequest") Call<String> sendFriendRequest(…); 呼叫执行: Response<String> a = myApi.sendFriendRequest(…).execute(); 反应的身体是“成功”。

我怎样才能使用Parse LiveQuery的Android自动添加新的对象到我的RecyclerAdapter?

我使用LiveQuery解析Android来监听事件,即创建一个对象。 当对象被创建时,我想把它添加到我的列表的开始。 听力部分似乎正在工作,但我不知道如何处理收到的JSON对象。 特别是,我正在学习本教程,并使用Back4App作为主机: https ://docs.back4app.com/docs/android/live-query/ 摇篮: compile 'com.google.code.gson:gson:2.8.1' compile 'com.github.tgio:parse-livequery:1.0.3' 我有一个异步的任务,在一个单独的线程上运行网络操作,并能够检索所需的JSON对象: private class UpdateTask extends AsyncTask<String, String, String> { protected String doInBackground(final String… string) { Log.e(getClass().getName(), "ASYNC"); // Subscription final Subscription sub = new BaseQuery.Builder("Message") .build() .subscribe(); Log.e(getClass().getName(), String.valueOf(sub.isSubscribed())); sub.on(LiveQueryEvent.CREATE, new OnListener() { @Override public void on(final JSONObject object) { Log.e(getClass().getName(), object.toString()); runOnUiThread(new Runnable() […]

用json的json值填充当前对象是可能的?

我想在对象构造函数中填充来自Json的值的对象字段。 public AbstractObject(String jsonSerializedObject) { Gson gson = new Gson(); // Fill object values from json in *current* object } 这可能吗?

只有类允许在类文字的左侧

在StackOverflow中我知道很多类似的问题,但没有解决我的问题。 我有一个通用的数据类: data class ServiceCall<out T>(val result: T?, val exception: String?, val pagination: String?, val stringResult: String?) 我正在尝试像这样使用: Gson().fromJson(json, ServiceCall<SurveyListModel>::class.java).result IDE显示错误: 在类文字的左侧只允许使用类 如何解决这个问题? 提前致谢。

如何在kotlin中获得多维原始数组类?

在Java中,我一直在使用gson来解析一个像这样[[1.2, 4.1], [3.4, 4.4]] 1.2,4.1 [[1.2, 4.1], [3.4, 4.4]] 3.4,4.4 [[1.2, 4.1], [3.4, 4.4]]的JSON到一个java原始的多数组double[][] 代码看起来像这样(工作正常): String json = "[[1.2, 4.1], [3.4, 4.4]]" double[][] variable = new Gson().fromJson(json, double[][].class); 有没有办法在kotlin中获得double[][].class ? 是double[][] variable; 可以替代kotlin? 编辑: 我的目标是在kotlin中用gson实现同样的行为。 我有一千个双数组解析。 我想在kotlin中做这样的事情: val json = "[[1.1, 1.2], [2.1, 2.2, 2.3], [3.1, 3.2]" val variable:Double[][] = Gson().fromJson(json, Double[][]::class.java)

谷歌Gson – 反序列化列表<class>对象? (通用型)

我想通过谷歌Gson传递一个列表对象,但我不知道如何反序列化泛型类型。 我看了这个 (BalusC的回答)之后试了一下: MyClass mc = new Gson().fromJson(result, new List<MyClass>(){}.getClass()); 但是后来我在eclipse中得到一个错误:“新的List(){}类型必须实现继承的抽象方法…”,如果我使用快速修复,我会得到一个超过20个方法存根的怪物。 我很确定有一个更简单的解决方案,但我似乎无法找到它! 编辑: 我现在有 Type listType = new TypeToken<List<MyClass>>() { }.getType(); MyClass mc = new Gson().fromJson(result, listType); 不过,我在“fromJson”一行中得到以下例外: java.lang.NullPointerException at org.apache.harmony.luni.lang.reflect.ListOfTypes.length(ListOfTypes.java:47) at org.apache.harmony.luni.lang.reflect.ImplForType.toString(ImplForType.java:83) at java.lang.StringBuilder.append(StringBuilder.java:203) at com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:56) at com.google.gson.JsonDeserializationVisitor.invokeCustomDeserializer(JsonDeserializationVisitor.java:88) at com.google.gson.JsonDeserializationVisitor.visitUsingCustomHandler(JsonDeserializationVisitor.java:76) at com.google.gson.ObjectNavigator.accept(ObjectNavigator.java:106) at com.google.gson.JsonDeserializationContextDefault.fromJsonArray(JsonDeserializationContextDefault.java:64) at com.google.gson.JsonDeserializationContextDefault.deserialize(JsonDeserializationContextDefault.java:49) at com.google.gson.Gson.fromJson(Gson.java:568) at com.google.gson.Gson.fromJson(Gson.java:515) at com.google.gson.Gson.fromJson(Gson.java:484) at com.google.gson.Gson.fromJson(Gson.java:434) […]