Jsonp Coding Dojo

23
JSON ALAPOK

Transcript of Jsonp Coding Dojo

Page 1: Jsonp Coding Dojo

JSON ALAPOK

Page 2: Jsonp Coding Dojo

"name": "John Doe", "age": 29, "siblings": ["Jane Doe", "Herry Doe"], "address": "city": "Budapest", "street": "Deak Square" , "alive": false, "description": null

Page 3: Jsonp Coding Dojo

"name": "John Doe", // <­ String "age": 29, // <­ Number "siblings": ["Jane Doe", "Herry Doe"], // <­ Array "address": "city": "Budapest", "street": "Deak Square" , // <­ Object "alive": false, // <­ true/false "description": null // <­ null

Page 4: Jsonp Coding Dojo

PROGRAMMING MODELSobject modelstreaming model

Page 5: Jsonp Coding Dojo

PACKAGE: JAVAX.JSONreader interfacewriter interfacemodel builder interface

Page 6: Jsonp Coding Dojo

PACKAGE: JAVAX.JSON.STREAMparser interfacegenerator interface

Page 7: Jsonp Coding Dojo

LET'S CODE

Page 8: Jsonp Coding Dojo

Docs:

https://docs.oracle.com/javaee/7/api/javax/json/package-summary.html

Page 9: Jsonp Coding Dojo

EXERCISE 1:Olvassunk be json modelt stringből Használjunk hozzá

StringReader-t és JsonReader-t

Fordításhoz használjuk a Glassfish implementációt:org.glassfish; javax.json; 1.0.4

http://mvnrepository.com/artifact/org.glassfish/javax.json/1.0.4

Page 10: Jsonp Coding Dojo

<!­­?xml version="1.0" encoding="UTF­8"?­­><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema­instance" <modelversion>4.0.0</modelversion>

<groupid>hu.huog.jsonp</groupid> <artifactid>exercises</artifactid> <version>1.0­SNAPSHOT</version>

<packaging>jar</packaging>

<build> <plugins> <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven­jar­plugin</artifactid> <configuration> <archive> <manifest> <mainclass>Exercise00</mainclass> <addclasspath>true</addclasspath> </manifest> </archive>

Page 11: Jsonp Coding Dojo

</configuration> </plugin> </plugins> </build>

<dependencies> <dependency> <groupid>org.glassfish</groupid> <artifactid>javax.json</artifactid> <version>1.0.4</version> </dependency> </dependencies>

</project>

Page 12: Jsonp Coding Dojo

import javax.json.Json;import javax.json.JsonReader;import javax.json.JsonStructure;

import java.io.StringReader;

public class Exercise01

private static final String jsonString = " \"name\": \"John Snow\""

public static void main(String[] args)

JsonReader reader = Json.createReader(new StringReader(jsonString)); JsonStructure jsonst = reader.read(); reader.close();

System.out.println("json: " + jsonst);

Page 13: Jsonp Coding Dojo

EXERCISE 2:Készítsünk json modelt builder segítségével és írjuk ki

stringbe Használjunk JsonObjectBuilder-t,JsonArrayBuilder-t, JsonWriter-t, StringWriter-t

Page 14: Jsonp Coding Dojo

import javax.json.Json;import javax.json.JsonObject;import javax.json.JsonWriter;import java.io.StringWriter;

public class Exercise01

public static void main(String[] args)

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()

Page 15: Jsonp Coding Dojo

.add("type", "home") .add("number", "222­222­2222"))) .build();

StringWriter strWriter = new StringWriter();

JsonWriter jsonWriter = Json.createWriter(strWriter); jsonWriter.writeObject(model); jsonWriter.close();

String jsonStr = strWriter.toString();

System.out.println("json: " + jsonStr);

Page 16: Jsonp Coding Dojo

EXERCISE 3:Parsoljunk json stringet és irassuk ki a parse eventeket

Használjunk JsonParser-t

Page 17: Jsonp Coding Dojo

import javax.json.Json;import javax.json.stream.JsonParser;import java.io.StringReader;

public class Exercise03

private static final String jsonString = " \"name\": \"John Snow\""

public static void main(String[] args)

JsonParser parser = Json.createParser(new StringReader(jsonString));

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:

Page 18: Jsonp Coding Dojo

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;

Page 19: Jsonp Coding Dojo

EXERCISE 4:Készítsünk JSON stringet geerátor segítségével Használjunk

JsonGenerator-t, StringWriter-t

Page 20: Jsonp Coding Dojo

import javax.json.Json;import javax.json.stream.JsonGenerator;import java.io.StringWriter;

public class Exercise04

public static void main(String[] args)

StringWriter writer = new StringWriter(); JsonGenerator gen = Json.createGenerator(writer); gen.writeStartObject() .write("firstName", "Duke") .write("lastName", "Java") .write("age", 18) .write("streetAddress", "100 Internet Dr") .write("city", "JavaTown") .write("state", "JA") .write("postalCode", "12345") .writeStartArray("phoneNumbers") .writeStartObject() .write("type", "mobile") .write("number", "111­111­1111")

Page 21: Jsonp Coding Dojo

.writeEnd() .writeStartObject() .write("type", "home") .write("number", "222­222­2222") .writeEnd()

.writeEnd() .writeEnd(); gen.close();

String jsonString = writer.toString();

System.out.println("json:" + jsonString);

Page 22: Jsonp Coding Dojo

JSR374 (JSON PROCESSING 1.1)

wget http://download.oracle.com/otn-pub/jcp/json_p-1_1-edr-spec/jsonp-1.1-edr1-sources.zipwget http://download.oracle.com/otn-pub/jcp/json_p-1_1-edr-spec/jsonp-1.1-edr1-javadoc.zip

http://download.oracle.com/otndocs/jcp/json_p-1_1-edr-spec/index.html

Page 23: Jsonp Coding Dojo

RESOURCES:https://docs.oracle.com/javaee/7/api/javax/json/package-summary.htmlhttps://docs.oracle.com/javaee/7/tutorial/jsonp.htmhttp://www.jcp.org/en/jsr/detail?id=353http://www.jcp.org/en/jsr/detail?id=374https://github.com/google/gsonhttps://github.com/FasterXML/jackson