DataRow中两个比较特殊的方法put/puts
最后更新:2023-10-18 19:46:39
|
状态:未完成
通常情况下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"});