Tag: gson

使用GSON获取嵌套的JSON对象

我从我的android应用程序使用API​​,所有的JSON响应是这样的: { 'status': 'OK', 'reason': 'Everything was fine', 'content': { < some data here > } 问题是我所有的POJO都有一个status , reason字段,而content字段里面是我想要的真正的POJO。 有什么办法可以创建一个Gson自定义转换器来提取总是content字段,所以改造返回适当的POJO?

Java类型作为GSON的参数

在GSON中获取你所做的对象列表 Gson gson = new Gson(); Type token = new TypeToken<List<MyType>>(){}.getType(); return gson.fromJson(json, token); 它工作的很好,但我想走得更远,并有MyType参数化,所以我可以有一个共同的功能来解析与此代码的对象的列表 // the common function public <T> List<T> fromJSonList(String json, Class<T> type) { Gson gson = new Gson(); Type collectionType = new TypeToken<List<T>>(){}.getType(); return gson.fromJson(json, collectionType); } // the call List<MyType> myTypes = parser.fromJSonList(jsonString, MyType.class); 可悲的是返回一个StringMaps数组,而不是类型。 T被解释为另一种泛型,而不是我的类型。 任何解决方法?

Android Studio(Kotlin)GsonBuilder.registerTypeAdapter()给出2个错误

我正在使用Kotlin插件,并尝试使用GsonBuilder创建一个gson变量。 这用于在Java中没有问题的工作,但现在在尝试使用registerTypeAdapter()时,我得到了两个错误,如下所示: val gson = GsonBuilder().registerTypeAdapter(DateTime.class, DateTimeTypeConverter()).create() 对于第一个参数(类型),我得到“名称预期”错误。 对于第二个参数(typeAdapter),我得到“期待表达式”的错误

JSON到HashMap与使用Gson的对象

在我的Android应用程序(用Kotlin编写)中,我需要将一些JSON转换为MainObject哈希映射的字符串。 这就是JSON的样子: { "a": { "name": "A", "some_int": "2", "some_string": "string", "some_bool": false, "some_string_arr": [ "str1", "str2" ], "sub_obj_arr": [ { "obj_name": "d", "some_obj_string": "s" } ] }, "b": { "name": "B", "some_int": "4", "some_string": "string", "some_bool": false, "some_string_arr": [ "str5", "str6" ] } } 我创建了一些对象来帮助解决这个问题。 class MainObject { @SerializedName("name") val name: String? = null […]

如何使用gson序列化Pair的ArrayList

我正试图反序列化一个类型的对象 ArrayList<Pair<OuterData, ArrayList<InnerData>>> 其中OuterData和InnerData是使用gson的POJO。 我已经努力了,但是我无法做到。 我正进入(状态 java.lang.ClassCastException:com.google.gson.internal.LinkedTreeMap无法转换为v2015.oasis.pilani.bits.com.home.events.inner.InnerData 每当我尝试做new Gson().fromJson(json, type); 其中type是从TypeToken使用获得的 new TypeToken<ArrayList<Pair<OuterData, ArrayList<InnerData>>>>(){}.getType() 我虽然使用类型将解决我的问题,因为最初我不想使用它,但它没有。 任何帮助表示赞赏。 编辑:这里是OuterData和InnerData类(在kotlin中) data class InnerData(val name: String, val category: String, val categoryIcon: Int, val description: String, val rules: String, val time: String, val date: String, val venue: String, val notifyState: Boolean, val notifyTime: Int, val favouriteState: Boolean) data class OuterData(val […]

Gson和序列化具有继承性的对象的ArrayList

我对Gson和Json很新。 我有简单的事件,我想在Gson的帮助下通过Json序列化。 注意:代码在Kotlin。 public abstract class Event() { } public class Move : Event() { var from: Point? = null var to: Point? = null } public class Fire : Event() { var damage: Int = 0 var area: ArrayList<Point> = ArrayList(0) } public class Build : Event() { var to: Point? = null var […]

改造+ GSON反序列化+领域关系

最佳实践:关系+ Realm保存的JSON反序列化。 我有以下JSON: { "organizations": [{ "id": 1, "name": "Orga 1" }], "states": [{ "id": 1, "organizationId": 1, "name": "Read" }] } 这里是相应的Kotlin对象: class Organization { @SerializedName("id") @Expose val id: Long? = null @SerializedName("name") @Expose val name: String? = null } class State { @SerializedName("id") @Expose val id: Long? = null @SerializedName("organizationId") @Expose val organizationId: […]

使用gson序列化和返回不适用于泛型类型

我正在编程一个kotlin websocket,并想发送转换为json与gson的dtos。 所以我写了一个包装dto包含真正的dto和dto的一些额外的信息,就像它的类型。 这是我的包装dto class WrapperDto <T : AbstractDto> { var type = "" var action = "" var dto : T = AbstractDto() as T } 这是它可以包含的dtos之一: class Person : AbstractDto() { var firstName = "" var familyName = "" } 在这里出于测试的原因,我尝试将其转换为json然后再转换回来: val wrapperDto2 = WrapperDto<Person>() wrapperDto2.type = Person::class.simpleName!!; wrapperDto2.action = "add" val person […]

改造+ gson反序列化器:返回数组中

我有api返回json: {"countries":[{"id":1,"name":"Australia"},{"id":2,"name":"Austria"}, … ]} 我写模特班(Kotlin lang) data class Country(val id: Int, val name: String) 我想要使​​用retorift返回List <Models.Country>,从json中的“countries”字段请求 我下面写: interface DictService { @GET("/json/countries") public fun countries(): Observable<List<Models.Country>> companion object { fun create() : DictService { val gsonBuilder = GsonBuilder() val listType = object : TypeToken<List<Models.Country>>(){}.type gsonBuilder.registerTypeAdapter(listType, CountriesDeserializer) gsonBuilder.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) val service = Retrofit.Builder() .baseUrl("…") .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create(gsonBuilder.create())) .build() return […]

GSON不能用自定义getter来反序列化Kotlin类

我有一堂课 class Address { var address1: String? = null } 简单的JSON String jsonString = "{\"address1\":\"test\"}"; 所以我想要反序列化,所以我只是写 Gson gson = new GsonBuilder().create(); Address address = gson.fromJson(jsonString, Address.class); 它完美的作品。 但是,如果我添加自定义getter class Address { var address1: String? = null get() = address1 ?: "" } 我正在得到 java.lang.StackOverflowError at ru.reksoft.okey.models.Address.getAddress1(Address.kt:8) at ru.reksoft.okey.models.Address.getAddress1(Address.kt:8) //and here are a lot of same […]