DataRow中两个比较特殊的方法put/puts
最后更新:2025-07-24 11:08:52
|
状态:未完成
通常情况下DataRow经常的方法是put(key, value), get(key)
但是在操作复杂数据结构时经常会遇到多层嵌套的情况
比较啰嗦的编码一般会这样
DataRow r0 = new DataRow();
DataRow r1 = new DataRow();
r0.put("r1", r1);
DataRow r2 = new DataRow();
r1.put("r2", r2):
但是在操作复杂数据结构时经常会遇到多层嵌套的情况
比较啰嗦的编码一般会这样
DataRow r0 = new DataRow();
DataRow r1 = new DataRow();
r0.put("r1", r1);
DataRow r2 = new DataRow();
r1.put("r2", r2):
这样反反复复的new put,不但机械啰嗦,也很容易漏几个put
所以DataRow提供了put(key) puts(key)的方法(注意只有一个key参数没有value)
实际就是把new put合成了一步
DataRow r0 = new DataRow();
DataRow r1 = r0.put("r1"); //这个方法内部实现了r1 = new Row();
同样的
DataSet set = r0.puts("s1");
类似的DataSet也提供了一个无参数的add()
DataRow row = set.add(); //方法内部也实现了new DataRow();并返回
例如要生成以下JSON结构
{
"analysis": {
"filter": {
"us_synonym_filter": {
"type": "synonym_graph",
"synonyms_path": "analysis/us_synonym.txt"
}
},
"analyzer": {
"us_max_word": {
"tokenizer": "ik_max_word",
"filter": [
"us_synonym_filter"
]
},
"us_smart": {
"tokenizer": "ik_smart",
"filter": [
"us_synonym_filter"
]
}
}
}
}
因为put(k,v)是HashMap的方法返回了Object所以换成set与put作用是一样的
DataRow settings = new DataRow(KeyAdapter.KEY_CASE.SRC);
DataRow analysis = settings.put("analysis");
analysis.put("filter").put("us_synonym_filter").set("type","synonym_graph").set("synonyms_path", "analysis/us_synonym.txt");
DataRow analyzer = analysis.put("analyzer");
analyzer.put("us_max_word").set("tokenizer","ik_max_word").set("filter",new String[]{"us_synonym_filter"});
analyzer.put("ik_smart").set("tokenizer","ik_max_word").set("filter",new String[]{"us_synonym_filter"});