我有一个具有以下属性的类,
public AnalyticsEventProperty(String eventID, String key, Object value, EventPropertyValueType valueType) {
this.eventID = eventID;
this.key = key;
this.value = value;
this.type = valueType();
}
创建此对象并将其传递给一个事件属性数组,当我执行Json转换时,得到以下输出:
{"eventID":"afc970ef-80cf-4d6e-86e6-e8f3a56f26f5","name":"app_start","propertyArrayList":[{"eventID":"afc970ef-80cf-4d6e-86e6-e8f3a56f26f5","key":"session_id","value":"69200430-95a0-4e14-9a36-67942917573d"}
我使用了“key”和“value”,我知道为什么,但我如何使用键和值作为键和值,即“session_id”:“69200430- 95 a0 - 4 e14 - 9a 36 - 67942917573 d”,请记住,这些键和值可能具有不同的属性名称,具体取决于在构造函数中传递的内容。
当我创建String时,我只是调用
String text_to_send = new Gson().toJson(events);
其中事件是数组列表。
1条答案
按热度按时间1mrurvl11#
您可以通过编写一个自定义的
TypeAdapterFactory
来解决这个问题,它可以为您的类(即基于反射的类)获取默认适配器,并使用它来创建一个JsonObject
形式的内存中JSON表示。之后,必须将其写入到X1M3N1X:然后,您必须使用
GsonBuilder
注册工厂。另一种方法是通过直接将属性写入
JsonWriter
来手动执行类的完整序列化。这很可能会提高性能,但也更容易出错。