java字段映射成其他字段名称_如何用领域将Json映射到有效的Java字段名

在这个问题解决之前,我已经在我的应用程序中做了一个变通方法,假设我已经

聊天.java

public class Chat extends RealmObject {

@Index

@SerializedName("c")

private String code = "";

@Index

@SerializedName("t")

private int type;

}

和RealmUtil.java

public class RealmUtil {

private static HashMap> classesFieldsMap = new HashMap<>();

static {

initClasses(Chat.class);

}

private static void initClasses(Class cls) {

if (!classesFieldsMap.containsKey(cls.toString())) {

Field[] fields = cls.getDeclaredFields();

HashMap fieldsMap = new HashMap<>();

for (Field a : fields) {

SerializedName annotation = a.getAnnotation(SerializedName.class);

if (annotation != null) {

fieldsMap.put(annotation.value(), a.getName());

}

}

classesFieldsMap.put(cls.toString(), fieldsMap);

}

}

public static JSONObject mapGsonObjectToRealm(Class cls, JSONObject object) throws JSONException {

JSONObject newUserObj = new JSONObject();

HashMap fieldsMap = classesFieldsMap.get(cls.toString());

for (String setKey : fieldsMap.keySet()) {

String mappedKey = fieldsMap.get(setKey);

if (object.has(setKey))

newUserObj.put(mappedKey, object.get(setKey));

}

return newUserObj;

}

}

通过使用反射initClasses方法,将类的每个Gson SerializedName映射到领域记录的相应名称。

mapGsonObjectToRealm方法将用新字段名创建旧对象的新对象。

用法:

JSONObject newObject = RealmUtil.mapGsonObjectToRealm(Chat.class, new JSONObject().put("c", "this_is_code").put("t", "this_is_type"));

final JSONArray jsonArray = new JSONArray();

jsonArray.put(newObject);

Realm.getDefaultInstance().executeTransactionAsync(new Realm.Transaction() {

@Override

public void execute(Realm realm) {

realm.createOrUpdateAllFromJson(Chat.class, jsonArray);

}

});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot中,可以使用@Result注解来设置字段与实体属性的映射关系。当字段类型为JSONObject和JSONArray时,可以使用以下解决方案来进行映射。首先,需要在注解中指定列名(column)和属性名(property),并使用typeHandler参数来指定类型处理器的类。比如,对于JSON格式的表字段映射,可以使用如下的注解配置: @Result(column = "alarm_rule", property = "alarmRule", jdbcType = JdbcType.OTHER, typeHandler = com.geespace.microservices.data.metrics.config.server.dao.MySqlJsonHandler.class) 这个注解将"alarm_rule"字段映射到实体类的"alarmRule"属性上,并使用MySqlJsonHandler类来处理类型转换。这样,在查询数据库并将结果映射到实体对象时,就可以正确处理JSON类型的字段了。中的示例。这样,在发送请求时,URL中的功能性字符就会得到正确的编码处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [springboot中表字段映射中设置JSON格式字段映射](https://blog.csdn.net/a924382407/article/details/121957433)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [springboot get请求传递json对象(含值为对象的属性),映射到后台Controller参数实体的 Map 类型字段(含...](https://blog.csdn.net/FunnyWhiteCat/article/details/107645342)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值