JSON Processing(JSR-353)に寄り道1

Websocketで複数のデータを送ろうとした際に、JavaEE7でJSON Processingが出てたのを思い出したので触ってみた。

ArunさんのブログにあるようにJSONとObject間のデータバインディングまではやってくれない。

(Note, binding JSON to Java objects and vice versa is not part of the scope of this JSR.)

想定用途(?)を探して見つけたブログによるとStaxでDom操作する感覚で使えるよとのこと。

->JCPにしっかり書いてあった。(2.1)

 

利用設定(Maven)

pomに依存関係を追加

        <!-- JSON Processing (JSR-353) -->
        <dependency>
            <groupId>javax.json</groupId>
            <artifactId>javax.json-api</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>javax.json</artifactId>
            <version>1.0.2 </version>
        </dependency>

試したソース

import javax.json.Json;
import javax.json.JsonObject;
import javax.json.stream.JsonParser;

public class FirstJson01 {
    public static void main(String[] args) {
        System.out.println("生成");
        JsonObject model = Json.createObjectBuilder()
                   .add("firstName", "Duke")
                   .add("lastName", "Java")
                   .add("age", 18)
                   .add("streetAddress", "100 Internet Dr")
                   .add("city", "JavaTown")
                   .add("state", "JA")
                   .add("postalCode", "12345")
                   .add("phoneNumbers", Json.createArrayBuilder()
                      .add(Json.createObjectBuilder()
                         .add("type", "mobile")
                         .add("number", "111-111-1111"))
                      .add(Json.createObjectBuilder()
                         .add("type", "home")
                         .add("number", "222-222-2222")))
                   .build();

        String text = model.toString();
        System.out.println(text);

        System.out.println("解析");
        StringReader sr = new StringReader(text);
        JsonParser parser = Json.createParser(sr);
        while(parser.hasNext()){
            JsonParser.Event event = parser.next();
            System.out.println(event);
        }
    }
}

Eventの種類はSTART_OBJECT/END_OBJECT、START_ARRAY/END_ARRAY、KEY_NAME、VALUE_STRING、VALUE_NUMBER、VALUE_TRUE、VALUE_FALSE、VALUE_NULL。

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です