Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaのJsonParserSequenceを使って2つのJSON文字列を順番に解析する方法

JsonParserSequenceとは

JsonParserSequenceは、特定の順序で配置された2つのサブパーサー(JsonParser)を含む1つのパーサーを作成するためのヘルパークラスです。このクラスを利用すると、複数のJSON文字列を、あたかも1つの連続したストリームであるかのように扱うことができます。

シーケンスの作成には、JsonParserSequenceクラスが提供するstaticメソッドcreateFlattened()を使用します。第1のパーサーがすべてのトークンを読み終えると、処理は自動的に第2のパーサーへと引き継がれます。

構文

public static JsonParserSequence createFlattened(JsonParser first, JsonParser second)

コード例

以下の例では、2つのJSON文字列からそれぞれJsonParserを生成し、createFlattened()メソッドで1つのシーケンスに結合しています。その後、whileループとnextToken()メソッドを使って全トークンを順番に走査し、フィールド名と値をコンソールに出力しています。

import java.io.*;
import com.fasterxml.jackson.core.*;
import com.fasterxml.jackson.core.util.*;

public class JsonParserSequenceTest {
   public static void main(String[] args) throws JsonParseException, IOException {
      String jsonString1 = "{\"id\":\"101\", \"name\":\"Ravi Chandra\", \"address\":\"Pune\"}";
      String jsonString2 = "{\"id\":\"102\", \"name\":\"Raja Ramesh\", \"address\":\"Hyderabad\", \"contacts\":[{\"mobile\":\"9959984805\", \"home\":\"7702144400\"}]}";
      JsonFactory jsonFactory = new JsonFactory();
      JsonParser jsonParser1 = jsonFactory.createParser(jsonString1);
      JsonParser jsonParser2 = jsonFactory.createParser(jsonString2);
      JsonParserSequence jsonParserSequence = JsonParserSequence.createFlattened(jsonParser1, jsonParser2);
      JsonToken jsonToken = jsonParserSequence.nextToken();
      while(jsonToken != null) {
         switch(jsonToken) {
            case FIELD_NAME: System.out.println("Key field: " + jsonParserSequence.getText());
            break;
            case VALUE_FALSE:
            case VALUE_NULL:
            case VALUE_NUMBER_FLOAT:
            case VALUE_NUMBER_INT:
            case VALUE_STRING:
            case VALUE_TRUE: System.out.println("Key value: " + jsonParserSequence.getText());
            break;
         }
         jsonToken = jsonParserSequence.nextToken();
      }
      jsonParserSequence.close();
   }
}

実行結果

出力を見ると、最初のJSON文字列のすべてのトークンが出力された後、シームレスに2番目のJSON文字列の解析へ移行していることが分かります。ネストされた配列やオブジェクトのトークンも正しく処理されています。

Key field: id
Key value: 101
Key field: name
Key value: Ravi Chandra
Key field: address
Key value: Pune
Key field: id
Key value: 102
Key field: name
Key value: Raja Ramesh
Key field: address
Key value: Hyderabad
Key field: contacts
Key field: mobile
Key value: 9959984805
Key field: home
Key value: 7702144400

ポイントまとめ

  • createFlattened():2つのJsonParserを渡すことで、1つのシーケンシャルなパーサーを生成します。
  • nextToken():最初のパーサーのトークンが尽きると、自動的に2番目のパーサーへ切り替わります。
  • getText():FIELD_NAMEの場合はキー名を、VALUE系トークンの場合は値を取得できます。
  • 使用後はclose()を呼び出してリソースを解放しましょう。
  1. JavaでJSON配列を作成する方法をわかりやすく解説

    JSON配列とは、角括弧で囲まれた値の順序付きコレクションのことです。具体的には「[」で始まり「]」で終わり、配列内の各値はカンマ(,)で区切られます。JSON配列のサンプル{ books: [Java, JavaFX, Hbase, Cassandra, WebGL, JOGL] }json-simpleは、JSONオブジェクトを処理するための軽量ライブラリです。このライブラリを使えば、JavaプログラムからJSONドキュメントの内容を読み取ったり、書き込んだりすることができます。json-simpleのMaven依存関係json-simpleライブラリを使用するには、まずpom.x

  2. JavaでJSONファイルを作成する方法をわかりやすく解説

    JSON(JavaScript Object Notation)は、人間が読みやすい形式でデータを交換するために設計された、軽量なテキストベースのオープン標準フォーマットです。JSONの記法は、C、C++、Java、Python、Perlなど、多くのプログラミング言語に精通したプログラマーにとって馴染み深いものとなっています。 JSONドキュメントのサンプル 以下は、書籍情報を格納した典型的なJSONドキュメントの例です。 { book: [ { id: 01, language: Java, ed