public static class hiJSON.Engine extends Object implements Cloneable
hiJSONのstaticメソッドと同じ名称のメソッドとasClass()メソッドを持ちます。
hiJSONメソッドは連結式となっています。
入口はhiJSONのstaticメソッドでこのメソッドは本クラスのインスタンスを返します。その後連結されるメソッドは本クラスで行っています。
String _json_text="..."; // hiJSON.parseText(_json_text) // 新たなEngineを返す .with_option(hiU.CHECK_UNSET_FIELD) // Engineの機能 .asClass(Sample.class) // Engineの機能 // hiJSON.with_option(hiU.CHECK_UNSET_FIELD) // 新たなEngineを返す .parseText(_json_text) // Engineの機能 .asClass(Sample.class) // Engineの機能本クラスのメソッドの多くはエンジンの状態を変更するものですが、hiJSON.parseXX()で新たなEngineを返しますので、asXXXで結果を得た後に影響は残りません。
修飾子とタイプ | メソッドと説明 |
---|---|
hiJSON.Engine |
accept_fields(Class<?> class_,
String... fieldNames_)
特定フィールドのパーズを可能とする.
hiU.PUBLIC_ONLY指定時にpublic以外のメンバを許します。
|
<T> T |
as(Class<T> class_)
指定の型にパーズする
|
<TT> TT |
as(hiJSON.TX<TT> tobj_)
指定の型にパーズする
|
<T> T |
asClass(Class<T> class_)
指定の型にパーズする
|
<TT> TT |
asClass(hiJSON.TX<TT> tobj_)
指定の型にパーズする
|
<T> ArrayList<T> |
asClassList(Class<T> class_)
指定型を内容とするリストを得る.
|
<T> LinkedHashMap<String,T> |
asClassValues(Class<T> class_)
リスト{...}形式ではない名前付き値並びから指定クラスの辞書を得る.
|
Map<String,Object> |
asMap()
構造解析のみ行いMapを得る.
|
<T> T |
asMap(Class<T> class_)
Map(String,Object)を引数とする利用者nodeクラスを構築する.
|
ArrayList<Map<String,Object>> |
asMapList()
要素の並びをパーズし、Mapのリストを得る.
|
Object |
asNode()
構造解析のみ行う.
|
<T> T |
asNode(Class<T> class_)
node(Object)を引数として利用者nodeクラスを構築する.
|
ArrayList<Object> |
asNodeList()
要素の並びをパーズし、Objectのリストを得る.
|
LinkedHashMap<String,Object> |
asNodeValues()
リスト{...}形式ではない名前付き値並から汎用Objectの辞書を得る.
|
hiJSON.Probe |
asProbe()
構造解析のみ行いProbeを得る.
|
hiJSON.Engine |
clone() |
hiJSON.Engine |
parse(String json_text_)
パーズするテキストを指定.
|
hiJSON.Engine |
parseFile(String fileName_)
パーズ対象の読み込み元ファイルを指定する.
|
hiJSON.Engine |
parseNode(Object json_obj_)
パーズする構造オブジェクトを指定.
|
hiJSON.Engine |
parseReader(Reader json_reader_)
パーズ対象の読み込み元を指定する.
|
hiJSON.Engine |
parseText(String json_text_)
パーズするテキストを指定.
|
hiFieldFormat |
str_format()
この機構の表示フォーマットを得る.
|
void |
str_reset_format()
このエンジンの表示フォーマットをリセットする.
|
String |
str(Object obj_)
JSON表示
|
String |
str(Object obj_,
long option_)
JSON表示
|
<T> void |
toMember(Object target_obj_,
String member_name_)
指定のインスタンスのメンバにパーズする
|
<T> void |
toStaticMember(Class<T> class_,
String member_name_)
指定の型のstaticメンバにデータを得る
|
String |
toString()
概要表示(間違って表示したときの用心).
|
hiJSON.Engine |
with_atType_parse(hiU.QuadrFunctionEx<Class<?>,hiField,String,Object,Object,Exception> check_func_)
@typeパーズ手続き設定.
|
hiJSON.Engine |
with_class_from_node(Class<?> class_,
hiU.TriFunctionEx<Class<?>,hiField,Object,Object,Exception> check_func_)
nodeをクラスに割り当てる処理設定.
|
hiJSON.Engine |
with_dict_parse(String key_,
hiU.TriFunctionEx<String,Object,Map<String,Object>,Object,Exception> check_func_)
辞書形式解析.
|
hiJSON.Engine |
with_functionStyle_parse(String funcName_,
hiU.BiFunctionEx<String,ArrayList<Object>,Object,Exception> check_func_)
関数形式配列解析手続き設定.
|
hiJSON.Engine |
with_option(long option_)
パーズオプションを指定する.
|
hiJSON.Engine |
with_regex_node_parse(hiU.BiFunctionEx<String,String,Object,Exception> func_)
正規表現形式解析手続き設定.
|
hiJSON.Engine |
without_option(long option_)
パーズオプションを無効にする.
|
public hiJSON.Engine clone()
public String toString()
public hiFieldFormat str_format()
変更はエンジンに反映されます。
public void str_reset_format()
public String str(Object obj_, long option_)
obj_
- オブジェクトoption_
- オプションpublic hiJSON.Engine with_functionStyle_parse(String funcName_, hiU.BiFunctionEx<String,ArrayList<Object>,Object,Exception> check_func_)
関数形式の記述 func(aaa,bbb)の処理をラムダ式で指定します。
ラムダ式は次の形です。
Object func(String 関数名,ArrayList<Object> 括弧内の要素並び)
funcName_
- 関数名check_func_
- ラムダ式public hiJSON.Engine with_regex_node_parse(hiU.BiFunctionEx<String,String,Object,Exception> func_)
正規表現形式記述 /rrrrr/p の処理をラムダ式で指定します。
pはオプションで省略できます。
ラムダ式は次の形です。
Object func(String 正規表現,String オプション)
func_
- ラムダ式public hiJSON.Engine with_dict_parse(String key_, hiU.TriFunctionEx<String,Object,Map<String,Object>,Object,Exception> check_func_)
指定要素を持つ辞書の置き換えをラムダ式で指定
ラムダ式は次の形です。
Object func(String 指定された要素名,String 指定された要素の値 ,Map<String,Object> 指定された要素も含む辞書)
key_
- 辞書のキーcheck_func_
- ラムダ式public hiJSON.Engine accept_fields(Class<?> class_, String... fieldNames_)
hiJSON.accept_fields(Class,String...)
参照class_
- クラスfieldNames_
- フィールド名public hiJSON.Engine with_class_from_node(Class<?> class_, hiU.TriFunctionEx<Class<?>,hiField,Object,Object,Exception> check_func_)
nodeパーズ時に特定の型のjson汎用オブジェクトを部分パーズするラムダ式を登録します。
ラムダ式は次の形です。
Object func(Class クラス,hiField フィールド情報(フィールド名等がある), Object nodeオブジェクト)
hiJSON.with_class_from_node(Class,otsu.hiNote.hiU.TriFunctionEx)
参照class_
- チェックするクラスcheck_func_
- ラムダ式public hiJSON.Engine with_atType_parse(hiU.QuadrFunctionEx<Class<?>,hiField,String,Object,Object,Exception> check_func_)
@typeフィールドを持つクラスで@type情報による自動割り当てができなかったものに対して呼ばれる
hiJSON.with_atType_parse(otsu.hiNote.hiU.QuadrFunctionEx)
参照check_func_
- ラムダ式public hiJSON.Engine parseText(String json_text_)
hiJSON.parseText(String)
参照json_text_
- パーズする文字列public final hiJSON.Engine parse(String json_text_)
hiJSON.parseText(String)
参照json_text_
- パーズする文字列public hiJSON.Engine parseNode(Object json_obj_)
json_obj_
- JSON構造オブジェクトpublic final hiJSON.Engine parseReader(Reader json_reader_)
json_reader_
- Readerpublic final hiJSON.Engine parseFile(String fileName_)
fileName_
- ファイル名public final hiJSON.Engine with_option(long option_)
hiJSON.with_option(long)
参照option_
- オプションpublic final hiJSON.Engine without_option(long option_)
option_
- オプションpublic <T> T asClass(Class<T> class_)
T
- 型class_
- 型public <T> T as(Class<T> class_)
T
- 型class_
- 型public <T> void toStaticMember(Class<T> class_, String member_name_)
T
- 型class_
- 型member_name_
- メンバ名public <T> void toMember(Object target_obj_, String member_name_)
T
- 型target_obj_
- このインスタンスのメンバにデータを得るmember_name_
- メンバ名public <TT> TT asClass(hiJSON.TX<TT> tobj_)
TT
- 型tobj_
- 指定型情報を持つTX型のインスタンスpublic <TT> TT as(hiJSON.TX<TT> tobj_)
TT
- 型tobj_
- 指定型情報を持つTX型のインスタンスpublic <T> ArrayList<T> asClassList(Class<T> class_)
[]で囲まれた配列をパーズし指定型のArrayListを得ます。
[ {id:'001',name:'田中',age:51}, {id:'002',name:'鈴木',age:32}, {id:'003',name:'山田',age:63}, {id:'004',name:'佐藤',age:40} ]
次のように、[]で囲まれない、名前付きの値の並びのパーズも可能です
{id:'001',name:'田中',age:51} {id:'002',name:'鈴木',age:32} {id:'003',name:'山田',age:63} {id:'004',name:'佐藤',age:40}
T
- 型class_
- 内容となる型public ArrayList<Object> asNodeList()
要素並びをパーズし、汎用Objectのリストを得ます。
[ {id:'001',name:'田中',age:51}, {id:'002',name:'鈴木',age:32}, {id:'003',name:'山田',age:63}, {id:'004',name:'佐藤',age:40} ]
[]で囲まれない、形式も受け付けます。
{id:'001',name:'田中',age:51} {id:'002',name:'鈴木',age:32} {id:'003',name:'山田',age:63} {id:'004',name:'佐藤',age:40}
public ArrayList<Map<String,Object>> asMapList()
要素並びをパーズしMap<String,Object>のリストを得ます。
public <T> LinkedHashMap<String,T> asClassValues(Class<T> class_)
次のように、{}で囲まれない、名前付きの値の並びをパーズします。
u1={id:'001',name:'田中',age:51} u2={id:'002',name:'鈴木',age:32} u3={id:'003',name:'山田',age:63} u4={id:'004',name:'佐藤',age:40}
T
- 型class_
- 内容となる型public LinkedHashMap<String,Object> asNodeValues()
次のように、{}で囲まれない、名前付きの値の並びをパーズします。
u1={id:'001',name:'田中',age:51} u2={id:'002',name:'鈴木',age:32} u3={id:'003',name:'山田',age:63} u4={id:'004',name:'佐藤',age:40}
public Object asNode()
parseNode(xxx).asNode()を流れではxxxがそのまま返ります。
public hiJSON.Probe asProbe()
public <T> T asNode(Class<T> class_)
ノードツリーObjectを利用者クラスの構築子に与えます。
T
- 利用者クラスclass_
- 利用者クラスpublic <T> T asMap(Class<T> class_)
ノードツリーObjectをMapにキャストした上で利用者クラスの構築子に与えます。
T
- 利用者クラスclass_
- 利用者クラス