/
JSONPExamples.java
135 lines (117 loc) · 5.33 KB
/
JSONPExamples.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package pl.samouczekprogramisty.kursjava.json;
import javax.json.*;
import javax.json.stream.JsonGenerator;
import javax.json.stream.JsonGeneratorFactory;
import javax.json.stream.JsonParser;
import javax.json.stream.JsonParserFactory;
import java.io.ByteArrayInputStream;
import java.io.OutputStream;
import java.util.Collections;
import java.util.Map;
public class JSONPExamples {
public static void main(String[] args) {
objectModeWriting();
objectModeReading();
streamModeWriting();
streamModeReading();
}
private static void streamModeWriting() {
JsonGeneratorFactory generatorFactory = Json.createGeneratorFactory(Collections.singletonMap(JsonGenerator.PRETTY_PRINTING, true));
JsonGenerator generator = generatorFactory.createGenerator(System.out);
generator
.writeStartObject()
.write("imię", "Marcin")
.write("nazwisko", "Pietraszek")
.writeStartObject("strona")
.write("adres www", "http://www.samouczekprogramisty.pl")
.writeStartArray("artykuły")
.writeStartObject()
.write("tytuł", "Format JSON w języku Java")
.writeStartObject("data publikacji")
.write("rok", 2018)
.write("miesiąc", 9)
.write("dzień", 13)
.writeEnd()
.writeEnd()
.writeEnd()
.writeEnd()
.writeEnd().flush();
}
private static void streamModeReading() {
JsonParserFactory parserFactory = Json.createParserFactory(Collections.emptyMap());
JsonParser parser = parserFactory.createParser(buildObject());
while (parser.hasNext()) {
JsonParser.Event event = parser.next();
switch (event) {
case START_OBJECT:
System.out.println("{");
break;
case END_OBJECT:
System.out.println("}");
break;
case START_ARRAY:
System.out.println("[");
break;
case END_ARRAY:
System.out.println("]");
break;
case KEY_NAME:
System.out.print(String.format("\"%s\": ", parser.getString()));
break;
case VALUE_NUMBER:
System.out.println(parser.getBigDecimal());
break;
case VALUE_STRING:
System.out.println(String.format("\"%s\"", parser.getString()));
break;
default:
System.out.println("true, false or null");
}
}
}
private static void objectModeWriting() {
JsonObject authorObject = buildObject();
System.out.println(authorObject.toString());
write(authorObject, System.out);
}
private static void write(JsonObject jsonObject, OutputStream outputStream) {
Map<String, ?> config = Collections.singletonMap(JsonGenerator.PRETTY_PRINTING, true);
JsonWriterFactory writerFactory = Json.createWriterFactory(config);
writerFactory.createWriter(outputStream).write(jsonObject);
}
private static void objectModeReading() {
String jsonDocument = buildObject().toString();
JsonReaderFactory readerFactory = Json.createReaderFactory(Collections.emptyMap());
try (JsonReader jsonReader = readerFactory.createReader(new ByteArrayInputStream(jsonDocument.getBytes()))) {
JsonStructure jsonStructure = jsonReader.read();
System.out.println(jsonStructure.getValue("/strona/artykuły/0/data publikacji"));
}
try (JsonReader jsonReader = readerFactory.createReader(new ByteArrayInputStream(jsonDocument.getBytes()))) {
JsonObject jsonObject = jsonReader.readObject();
System.out.println(jsonObject
.getJsonObject("strona")
.getJsonArray("artykuły")
.get(0).asJsonObject()
.getJsonObject("data publikacji")
);
}
}
private static JsonObject buildObject() {
JsonBuilderFactory builderFactory = Json.createBuilderFactory(Collections.emptyMap());
JsonObject publicationDateObject = builderFactory.createObjectBuilder()
.add("rok", 2018)
.add("miesiąc", 9)
.add("dzień", 13).build();
JsonObject articleObject = builderFactory.createObjectBuilder()
.add("tytuł", "Format JSON w języku Java")
.add("data publikacji", publicationDateObject).build();
JsonArray articlesArray = builderFactory.createArrayBuilder().add(articleObject).build();
JsonObject webPageObject = builderFactory.createObjectBuilder()
.add("adres www", "http://www.samouczekprogramisty.pl")
.add("artykuły", articlesArray).build();
return builderFactory.createObjectBuilder()
.add("imię", "Marcin")
.add("nazwisko", "Pietraszek")
.add("strona", webPageObject).build();
}
}