Tag: gson

com.google.gson.internal.LinkedTreeMap不能转换为我的类

我从一个JSON字符串中获取我的对象有一些问题。 我有类Product public class Product { private String mBarcode; private String mName; private String mPrice; public Product(String barcode, String name, String price) { mBarcode = barcode; mName = name; mPrice = price; } public int getBarcode() { return Integer.parseInt(mBarcode); } public String getName() { return mName; } public double getPrice() { return Double.parseDouble(mPrice); } } […]

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 […]

在Kotlin中枚举注释

我有一个由Gson序列化/反序列化的枚举: enum class PacketType { NONE; [SerializedName(“request”)] REQUEST; [SerializedName(“response”)] RESPONSE; [SerializedName(“event”)] EVENT; } 不幸的是,我注意到Gson忽略了SerializedName注解,并使用枚举值的大写名称。 我决定找出为什么序列化不能按预期工作,并发现Kotlin删除枚举值的所有注释。 我怎样才能使这些注释出现在生成的字节码?

GSON抛出期望的BEGIN_OBJECT,但是是BEGIN_ARRAY

面对这个问题过去几天,有没有人检查这个问题? 任何帮助将不胜感激。如何解决这个问题? GSON抛出期望的BEGIN_OBJECT,但是是BEGIN_ARRAY 问题来自 override fun onSuccess(str_SUCCESS: String) { System.out.println(“JSON_IS”+str_SUCCESS) val paymentScheduleModel = Gson().fromJson(str_SUCCESS, PaymentScheduleModel::class.java) // Problem here } Json回应是 { “status”: { “statusCode”: 10016, “isSuccess”: true, “message”: “Success” }, “data”: { “payback_schedule”: [ { “id”: 2, “paid_amount”: “INR NaN”, “paidStatus”: “Upcoming Payback”, “paid_status”: “P”, “s_date”: “05/01/2018 12:31:10”, “e_date”: “11/01/2018 12:31:10”, “current_balance”: “INR 399”, “payanytime_button_status”: […]

Javatypes作为GSON的参数

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

springfox(swagger2)不能使用GsonHttpMessageConverterConfig

我正在尝试构建的是Spring-Boot(v1.2.3)应用程序,并将Rest API与SpringFox(swagger2)v2.0.0 我的Swagger弹簧配置 @EnableSwagger2 @Configuration public class SwaggerConfig { @Bean public Docket myApi() { return new Docket(DocumentationType.SWAGGER_2) .genericModelSubstitutes(DeferredResult.class) .useDefaultResponseMessages(false) .forCodeGeneration(false) .pathMapping(“/my-prj”); } } 我需要使用gson把我的pojo转换成json,我这样做: @Configuration public class GsonHttpMessageConverterConfig { @Bean public GsonHttpMessageConverter gsonHttpMessageConverter(Gson gson) { GsonHttpMessageConverter converter = new GsonHttpMessageConverter(); converter.setGson(gson); return converter; } } 麻烦的是,如果使用GsonHttpMessageConverter ,swagger v2会生成一个错误的json: { “value”: “{\”swagger\”:\”2.0\”,\”info\”:{\”description\”:\”Api Documentation\”,\”version\”:\”1.0\”,\”title\”:\”Api Documentation\”,\”termsOfService\”:\”urn:tos\”,\”contact\”:{\”name\”:\”Contact Email\”},\”license\”:{\”name\”:\”Apache 2.0\”,\”url\”:\”http: […]

如何将自定义类的ArrayList转换为Java中的JsonArray?

我正在尝试将自定义类的ArrayList转换为JsonArray。 以下是我的代码。 它执行得很好,但是一些JsonArray元素即使是ArrayList中的数字也是零。 我试图把它们打印出来。 像ArrayList中的customerOne age是35,但是在JsonArray中是0。 什么可能是错的? ArrayList customerList = CustomerDB.selectAll(); Gson gson = new Gson(); JsonElement element = gson.toJsonTree(customerList , new TypeToken<List>() {}.getType()); JsonArray jsonArray = element.getAsJsonArray();

Gson反序列化JSON。 java.lang.RuntimeException:无法调用具有根本原因的public com.derp.procedure.model.SkeletonElement(),无参数)

这是我第一次与JSON和Java。 我已经检查了很多像我一样的错误的问题。 但没有发现任何有用的东西。 我明白,我不得不添加参数构造函数。 我已经修好了,但它没有帮助我。 仍然发生相同的错误。 它可以这样工作。 我认为这与我的代码相当复杂的inheritance有关。 错误: SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/derp] threw exception [Request processing failed; nested exception is java.lang.RuntimeException: Failed to invoke public com.derp.procedure.model.SkeletonElement() with no args] with root cause java.lang.InstantiationException 堆栈跟踪: gru 19, 2014 8:27:50 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [dispatcher] in context […]

如何在GSON中反序列化Kotlin代表

我有这个class级: class Project { val nameProperty = SimpleStringProperty(“foobar”) val name by nameProperty } 我使用Fx-GSON库来序列化JavaFx属性。 当我序列化到JSON我得到这个: { “nameProperty”: “foobar”, “name$delegate”: “foobar” } 但是,当我将其反序列化回到Projecttypes的对象时, name和nameProperty是2个不同的对象 。 如何使name属性委托给新的nameProperty ?

暴露:如何解析JSON到一个实体类

我有以下用户表对象和实体类: object UserTable : IntIdTable() { val name = varchar(“name”, 256) } class User(id: EntityID): IntEntity(id) { companion object : IntEntityClass(UserTable) val name by UserTable.name } 有没有办法使用Gson(或其他库)来解析JSON到User实例,然后插入它? 从我可以告诉,看来我必须创建一个中间的UserData数据类,然后手动复制字段。 data class UserData { var id: Int? var name: String? } fun main() { val data = Gson().fromJson(“…”, UserData::class.java) val user = User.new { name = data.name […]