首页 / 浏览问题 / 组件GIS / 问题详情
iObject java 自动创建属性表设置字段的类型
43EXP 2020年06月03日

使用产品:iObject 9D 操作系统:win10 x64
数据类型: 文件型
问题详细描述:

iObject java 自动创建属性表设置字段的类型

有一个json数组存放相关字段,如何动态设置每个字段的类型默认的类型是文本型

String sourceTableField = "[{\"name\": \"source_id\",\"caption\": \"数据来源\",\"type\": \"FieldType.INT32\"}]";
FieldInfos fieldInfos = new FieldInfos();
JSONArray array = JSONArray.parseArray(fieldJson);
for (int i = 0; i < array.size(); i++){
    FieldInfo field = new FieldInfo();
    field.setName(((JSONObject) array.get(0)).get("name").toString());
    //field.setType((FieldType) ((JSONObject) array.get(0)).get("type"));这行报错 不能强转有别的方法吗
    field.setCaption(((JSONObject) array.get(0)).get("caption").toString());
    fieldInfos.add(field);
}

1个回答

您好,您是要设置字段的类型为文本型吗?直接通过fieldinfo.setType(FieldType value)方法来设置,就不需要去获取json数组里面的字段类型了

9,237EXP 2020年06月04日
不是所有字段都是文本型 所以想要动态来设置
那你在做的时候把字段类型区分开来就行,比如字段A是文本型,字段B是32位整型,你在json串里面存储这些类型就行。
String field = "[{\"name\": \"source_id\",\"caption\": \"数据来源\",\"type\": \"FieldType.INT32\"}]";

这样可以吗

你这样解析出来设置type也是不行的,因为设置字段的类型是一个常量,你可以自己在上层解析各个字段,或者直接定义某个字段为一个固定的int值
固定int值

setType(0) 这样设置类型可以吗
可以 但是这个需要你们自己去定义,
setType(0)这个会报错
您好,您可以在json串里面存储数值代码字段类型,如1代表布尔类型。2代表字节型。然后使用下面的代码来获取字段类型:
FieldType fieldType  =(FieldType) FieldType.parse(FieldType.class, 2);
...