我正在使用JSON
从db获取数据,我的数据看起来像这样我已经在db中保存了JSON对象,所以在DB数据中是这样的
{"column":"\"someString\".\"Folder\".\"FolderCentury\"","ascending":true}
我写了下面的代码来获取数据,因为它的JSON
对象
JSONObject jsonObj = geodata.getJSONObject(i);
TableField<Record, T> columnName = (TableField<Record, T>) jsonObj.get("column");
但这是问题
jsonObj.get("column");
这一行返回一个像这样的字符串
(java.lang.String) "someString"."Folder"."FolderCentury"
但是当我正在施放它的抛出异常
java.lang.ClassCastException: java.lang.String cannot be cast to org.jooq.TableField
我想知道如何将String
更改为TableField
对象? TableField Interface
答案 0 :(得分:1)
您可能认为JVM会“神奇地”知道您对JOOQ字符串文字的jOOQ TableField
的编码意味着反向将是同样自动的。显然,事实并非如此,你必须自己做一些工作。
我能看到的最简单的方法是在编码和实际的TableField
实例之间保留一个查找映射。
Map<String, TableField<?>> lookup = new HashMap<>();
// SOME_STRING is the generated schema instance
for (Table<?> table : SOME_STRING.getTables()) {
for (Field<?> field : table.fields()) {
// Replace "toString()" by an actual SQL rendering call, if you prefer
lookup.put(field.toString(), (TableField<?>) field);
}
}