BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース JSON-P仕様1.1のパブリックレビューが始まった。

JSON-P仕様1.1のパブリックレビューが始まった。

原文(投稿日:2017/03/08)へのリンク

JSR 374: JSON処理のためのJava API (JSON-P)バージョン1.1のパブリックレビューが始まった。このバージョンはJ2EE 8 (訳者注:Java EEが正しい)のリリースに含まれ、JSON-PがJSON IETF 標準に沿うものとなるだろう。次のサポートを含む。

JSON-Pは2013年にJ2EE 7のリリースで導入された。GsonJacksonの代わりとしてだ。標準JSON文書をパースし、生成し、クエリを発行するために設計された。

JSR-367: JSONバインディングのためのJava API (JSON-B)もまたJ2EE 8のリリースに含まれるだろう。JSON-BはJSON文書をJavaオブジェクトへバインドするために設計された。InfoQはJSON-Bのパブリックレビューを以前レポートした

はじめの一歩

JSON-Pのパースとポインタのサンプルとして、次のようなJSONファイルを考えてみよう。

    
[
    {
    "publication":"New Vaadin Spring Release Introduces Enhanced View Management",
    "publicationDate":"2016-12-30 00:00:00",
    "author":"Michael Redlich",
    "publicationType":"Article",
    "publisher":"C4Media"
    },
    {
    "publication":"Pivotal Releases First Milestone of Next-Generation Spring Data Featuring Reactive Database Access",
    "publicationDate":"2017-01-19 00:00:00",
    "author":"Michael Redlich",
    "publicationType":"Article",
    "publisher":"C4Media"
    },
    {
    "publication":"Netflix Introduces Hollow, a Java Library for Processing In-Memory Datasets",
    "publicationDate":"2017-01-31 00:00:00",
    "author":"Michael Redlich",
    "publicationType":"Article",
    "publisher":"C4Media"
    }
]
    

JSONファイルをJsonParserでパースしてみる。

    
public static final String JSON_FILE = "publications.json";

InputStream fis = new FileInputStream(JSON_FILE);

JsonParser parser = Json.createParser(fis);
while(parser.hasNext()) {
    JsonParser.Event event = parser.next();
    switch(event) {
        case START_ARRAY:
        case END_ARRAY:
        case START_OBJECT:
        case END_OBJECT:
        case VALUE_FALSE:
        case VALUE_NULL:
        case VALUE_TRUE:
            System.out.println(event.toString());
            break;
        case KEY_NAME:
            System.out.print(event.toString() + " " + parser.getString() + " - ");
            break;
        case VALUE_STRING:
        case VALUE_NUMBER:
        System.out.println(event.toString() + " " + parser.getString());
            break;
        }
    }
fis.close();
    

JsonPointerを使うと、JSONファイルにある特定の要素を見つけることができる。

    
InputStream fis = new FileInputStream(JSON_FILE);

JsonReader jsonReader = Json.createReader(fis);
JsonArray jsonArray = jsonReader.readArray();
JsonPointer pointer = Json.createPointer("/1/publication");
JsonValue publication = pointer.getValue(jsonArray);
System.out.println(i + ": " + publication);
fis.close();
    

このサンプルは上記のJSONファイルにある2番目の出版物を発見し出力する。我々はJSON-PとGson、Jacksonすべてをデモストレーションするプロジェクトを用意した。GitHubにある。

JSR-374ウェブサイトから最新の仕様ダウンロードしてレビューできる。

Java EEエヴァンジェリストとして知られるReza Rahman氏は最近J2EE 8でのJSONの役割について投稿した

これら2つのAPIはJSONを標準Javaプラットフォームの第一級の市民にする意味でとても重要です。ちょうどJAXP (XML処理のためのJava API)とJAXB (XMLバインディングのためのJava API)がXMLに向けて何年も前にしたように。整ったこれら2つのAPIでJava開発者はもう1つのJavaシリアライゼーションフォーマットとしてJSONを単純に考えることができます。サードパーティのライブラリや設定はもう必要ありません。JSON処理に関してはそのまま単純に動作するでしょう。私の考えではこれらのAPIは重要です。モジュラーとなるJava SEリリースに実際は移されるべきです。まさにすでにJava SEの一部となったJAXBとJAXPのように。

JSON-PとJSON-Bの最終バージョンは2017年4月にリリースされる見込みだ。

資料

JSON-Pについては次の資料に詳しい情報がある。

 
 

Rate this Article

Relevance
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT