我有一个Kotlin对象,正在尝试用Gson序列化。设置为委托的成员不会被序列化。如果我直接调用它(就像onChange回调一样),则委托可以工作,但是Gson只是忽略它。
有什么方法可以使Gson在不编写自定义序列化程序的情况下序列化它?
下面是我试图做的一个简单的例子:
class MyDelegate() {
fun getProperty(): String {
return "myDelegate Property"
}
fun observableDelegate(onChange: () -> Unit): Rea
使用Gson,我想反序列化包含惰性属性的Kotlin类。
使用Kotlin 1.0 beta 4,在对象反序列化过程中会出现以下错误:
Caused by: java.lang.InstantiationException: can't instantiate class kotlin.Lazy
使用Kotlin 1.0 beta 2时,我会用@瞬态烦扰来标记属性,让Gson跳过它。使用beta 4,这是不可能的,因为注释会导致编译错误。
This annotation is not applicable to target 'member property without b
我有一个用Kotlin写的android应用程序。我有许多类,对于每个类,我为这些类使用了Gson's toJson和fromJson函数。例如:
class A{
fun toJson():String {
return Gson().toJson(this)
}
fun fromJson(jsonString:String):A{
return Gson().fromJson(jsonString, A::class)
}
}
我还有一班B
class B{
fun toJson():String {
我使用Retrofit和Gson进行反序列化。我希望Retrofit响应是接口,所以我制作了TypeAdapterFactory,它应该告诉gson将接口反序列化到它们的类实现中。在我的例子中,是接口,FeedElementImp是实现它的类。
public class InterfaceAdapterFactory implements TypeAdapterFactory {
@SuppressWarnings("unchecked")
@Override
public <T> TypeAdapter<T> create(Gson gson, Ty
我正在努力寻找一种方法来将这个JSON输出序列化/反序列化为Java类?有人能提供代码样本吗?
[
{
"topic": "this is my topic"
},
[
{
"name": "John"
},
{
"age": 100
}
]
]
我当前的尝试使用的是这个Javabean:
public class Test {
private St
我对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> = Arr
我使用这个类存储数据。
public class Item(var name:String,
var description:String?=null){
}
并在ArrayList中使用
public var itemList = ArrayList<Item>()
使用此代码序列化对象。
val gs=Gson()
val itemListJsonString = gs.toJson(itemList)
和反序列化
itemList = gs.fromJson<ArrayList<Item>>(itemListJson
我正在尝试使用gson库将一个非常简单的Kotlin数据类序列化为json。有一个很好的机会,有一些死简单的用户错误,我错过了,但我的生活,我不知道是什么。我四处搜索,我的片段似乎与这些例子相匹配。我做错了什么?任何帮助都将不胜感激。
import com.google.gson.*
import com.google.gson.annotations.SerializedName
fun main(args : Array<String>) {
var gson = Gson()
data class Msg(
@SerializedName(
我使用的是gsonv2.8.2和Retroeftv2.3.0,我有两个类,Answer.kt:
open class Answer(@SerializedName("answer")
var text: String,
val id: Int)
和AnswerSummary.kt:
class AnswerSummary(val answer: Answer) : Answer(answer.text, answer.id) {
val percent: Int = 0
}
我正在列表中使用它(在J
我有两台安卓设备。我开发了两个代码库。一个是发送者代码库,另一个是接收方。这两个都是通过蓝牙套接字连接,我可以发送简单的字符串在他们之间。
在发件人设备上,我实现了一个,它捕获来自该设备的通知。对于每个通知,我都会得到一个类型的对象。根据文档,该对象实现了Parcelable接口。
为了传输这个对象,我尝试使用GSON,以及使用Parcel对象来传递和发送数据。这是不起作用的,所以我不再担心发送部分,并试图在同一装置上看看这是否会正确马歇尔和unmarshall。
这是两者的Kotlin密码,
/*
* Using Gson for serialization.
*
* Parts o
我正在使用库创建一个json对象并向其中添加一个json数组。我的代码看起来像这样:
JsonObject main = new JsonObject();
main.addProperty(KEY_A, a);
main.addProperty(KEY_B, b);
Gson gson = new Gson();
ArrayList<JsonObject> list = new ArrayList<>();
JsonObject objectInList = new JsonObject();
objectInList.addProperty(KEY_C, c);
我试图使用Gson()将kotlin对象类转换为JSON字符串,但它返回了null,而as对象字段实际上保存了这些值。如果它是一个单例对象,为什么不能直接使用将其转换为JSON字符串呢?
val gson = Gson()
val dummy= Dummy
val objDummy = gson.toJson(dummy)
object类:
object Dummy: Serializable{
var test2: String? = "test2"
var blank: String? = null
var test1: String? =
在Kotlin项目中,我让Gson将数据从JSON源注入到我创建的一些类中。数据注入,但是类init{.}从未被调用。
import com.google.gson.GsonBuilder
fun main(args: Array<String>) {
val myClass1 = MyClass("Hello!")
// should have printed "Hello!"
val jsonOfMyClass = "{myData:\"Hey!\"}"
val gson = G
我想使用GSON解析一个JSON对象。一切似乎都很正常,但当我试图解析一个更“复杂”的对象时,我得到了一个反序列化错误。我试图解析的对象包含一些原语、一个堆栈和一个向量集合。
有没有可能是堆栈\向量导致了这个问题?我能不能克服这个?
错误:
Exception in thread "AWT-EventQueue-0" com.google.gson.JsonParseException: The JsonDeserializer com.google.gson.DefaultTypeAdapters$CollectionTypeAdapter@4e76fba0 failed t
Kotlin的val属性,在设计上是不变的。它们应该是固定的,并且在初始化后是不变的。
但是,我意外地发现,Gson能够修改这些属性。
考虑一下这个例子:
//Entity class:
class User {
val name: String = ""
val age: Int = 0
}
由于name和age被定义为val,并且初始化为空字符串和零,所以它们必须保持不变,永不改变。
然而,这个测试成功了:
fun main() {
val json = "{\"name\":\"Mousa\",\"a
我编写了以下Spock测试来演示反序列化包含数字的JSON对象时出现的问题
class GsonFactorySpec extends Specification {
private Gson gson = GsonFactory.instance.gsonInstance
private String JSON = '{"number": 2}'
def 'deserialize a JSON document with an integer value to a Map'() {
when:
在Android应用程序中,我需要为Kotlin数据类反序列化Json数据,只有一个抽象层。但是我没有任何想法,在构造函数中放置正确的属性。
作为一个简单的版本,假设我有一个形状:
abstract class Shape(open val x: Int, open val y: Int)
有两个派生
data class Circle(val radius: Int, override val x: Int, override val y: Int): Shape(x, y)
和
data class Square(val width: Int, override val x: Int, o
使用gson和改造并创建了一个JsonDeserializer。
在java中,类被定义为:
public class Test implements JsonDeserializer<NavigationMenu[]> {...
在Kotlin,它被定义为:
class NavigationMenuArrayDeserializer : JsonDeserializer<Array<NavigationMenu>> {...
java类在使用GSON注册后按预期的方式调用。科特林族从来没有被称为。
Retrofit jsonClient = new Ret
有没有可能使用GSON解析字符串,并将'1','on','yes‘之类的值转换为布尔值true?
所以,我有一门课:
public class OItem {
public int id;
public String name;
public Boolean is_online;
}
然后我需要使用GSON将其转换为OItem对象
String string_json = "{id:200, name: Ivan Ivan, is_online : yes}";
Gson gson = new Gson();
O
我使用Kotlin data classes和GSON反序列化JSON模式,并实现默认值以防止JSON中的空对象。还-使用@SerializedName注释将JSON int枚举映射到Kotlin enum值:
data class Person(@SerializedName("name")
val name: String = ",
@SerializedName("age")
val age: Int = 0,
@SerializedName("hair
我能够将以下数据解析成一个java对象:
{
"name": "testname",
"address": "1337 455 ftw",
"type": "sometype",
"notes": "cheers mate"
}
使用以下代码:
public class Test
{
public static void main (String[] args) throws Exception
{
U