2021-04-01から1ヶ月間の記事一覧

Jackson JSON読込み、key-value 解析を柔軟にする

Jackson JSON読込みで、JSON key-value を BiConsumer はまたは、Stream 生成する方法を Jackson でJSON読込み key-value の BiConsumer を処理する - Oboe吹きプログラマの黙示録Jackson でJSON読込み key-value の Stream生成 - Oboe吹きプログラマの黙示…

Jackson でJSON読込み key-value の BiConsumer で、日付時刻も

oboe2uran.hatenablog.comoboe2uran.hatenablog.comを書いたが、日付時刻は、LocalDate LocalDateTime で読み取りたいという要求に応えるために 以下のようにする。 import java.io.IOException; import java.io.InputStream; import java.time.LocalDate; i…

Jackson の 日付時刻の読込み

JSR310 Date And Time API に従ったJacksonは、 jackson-datatype-jsr310 を使用する。 Maven 利用なら、pom.xml は、全部で <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.12.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> </dependency>

クラスと同じclasspath の場所に置いたファイルのIO(2)

先日書いた、 クラスと同じclasspath の場所に置いたファイルのIO - Oboe吹きプログラマの黙示録よくよく考えたら public File getCurrentPathFile(String path) throws IOException{ try{ return Optional.ofNullable( ClassLoader.getSystemClassLoader().…

Predicate 結果で Function 実行する

任意の検査をして Function<T, R> を実行する。 これは、stream か、Optional で filter 実行後に map あるいは flatMap を実行と ラムダ式を連結して記述すれば済むことではある。例)日付文字列→LocalDate String str; // TODO 日付文字列をstr に格納 LocalDate</t,>…

クラスと同じclasspath の場所に置いたファイルのIO

resources ではなく、Javaソースと同じ場所にファイルを置いて ビルド後の classes の同じパッケージ階層に配置されたファイルを読み込む方法、java 拡張子以外のファイルもビルドで、class と共に同じ場所に配置されるころが前提条件であるが、以下のように…

gson でJSON読み込んで、Key と Value

先日、Jackson でJSON読込み key-value の BiConsumer を処理する - Oboe吹きプログラマの黙示録Jackson でJSON読込み key-value の Stream生成 - Oboe吹きプログラマの黙示録 を書いたので、gson で同じことをします。JSONキーは、"." で区切り、配列は、[n…

Jackson でJSON読込み key-value の Stream生成

先日の oboe2uran.hatenablog.comさらに、以下のメソッドも追加すると便利かもしれない。 public Stream<Entry<String, Object>> stream(String jsontxt){ Stream.Builder<Entry<String, Object>> builder = Stream.builder(); ObjectMapper mapper = new ObjectMapper(); try{ parseJson(mapper.readTree</entry<string,></entry<string,>…

Jackson でJSON読込み key-value の BiConsumer を処理する

JSON を Jackson の ObjectMapper でクラスにマッピングするのではなく、 JSON キー と 値の BiConsumer を実行する。ObjectMapper の readTree メソッドで取得する JsonNode を使用する。 import java.io.IOException; import java.io.InputStream; import …

gson や Jackson に頼らない JSON の読込み

非奨励の nashorn 使用する方法でなく、別の方法です。 有名な Graal VM の助けを借りる方法です。 https://www.graalvm.org/ 準備: Maven pom.xml <dependency> <groupId>org.graalvm.js</groupId> <artifactId>js</artifactId> <version>21.0.0.2</version> </dependency> <dependency> <groupId>org.graalvm.js</groupId> <artifactId>js-scriptengine</artifactid></dependency>

gson や Jackson に頼らない JSON の読込み(非奨励の方法)

標準ライブラリにある javax.script.ScriptEngine で、 JavaScript として解釈させて Nashorn で参照する方法です。 Google gson みたいな高機能は期待できません。 Nashorn は、Java11 から非奨励です。 Java15 から廃止されてます 書いては、みたものの、…

Jackson でJSON読込み時、フィールド存在しない場合

Jackson で ObjectMapper による JSON 読込で、JSONキーに対してクラス側にフィールドが存在しないと UnrecognizedPropertyException を発生するわけだが、それを無視して読込みさせたい時は、 @JsonIgnoreProperties クラスアノテーションで、ignoreUnknown…

ClassCastException を配慮した cast 処理

instanceof 演算子で if文を書くのが嫌な時、 Class の isInstance メソッドで制御したOptional変数で処理する方法、、、 単に cast する。 Food f = Optional.of(pasta) .filter(e->Food.class.isInstance(e)) .map(e->Food.class.cast(e)) .orElse(null); …