Skip to content

Commit f2034ea

Browse files
committed
🐺🔩
1 parent e1ceba2 commit f2034ea

7 files changed

Lines changed: 170 additions & 77 deletions

File tree

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ plugins {
1111
}
1212

1313
group 'club.someoneice.json'
14-
version '1.7.3'
14+
version '1.7.4'
1515

1616
repositories {
1717
mavenLocal()

src/main/java/club/someoneice/json/node/ArrayNode.java

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package club.someoneice.json.node;
22

3-
import club.someoneice.json.api.NodeCodec;
43
import club.someoneice.json.api.TreeNode;
54

6-
import java.util.*;
5+
import java.util.ArrayList;
6+
import java.util.Arrays;
7+
import java.util.Iterator;
8+
import java.util.List;
79
import java.util.stream.Stream;
810

911
@SuppressWarnings({"rawtypes", "unchecked"})
@@ -84,4 +86,34 @@ public ArrayNode copy(List<JsonNode<?>> list) {
8486
list.addAll(this.obj);
8587
return new ArrayNode(list);
8688
}
89+
90+
public ArrayNode add(String str) {
91+
this.add(new StringNode(str));
92+
return this;
93+
}
94+
95+
public ArrayNode add(int i) {
96+
this.add(new IntegerNode(i));
97+
return this;
98+
}
99+
100+
public ArrayNode add(long l) {
101+
this.add(new LongNode(l));
102+
return this;
103+
}
104+
105+
public ArrayNode add(double d) {
106+
this.add(new DoubleNode(d));
107+
return this;
108+
}
109+
110+
public ArrayNode add(float f) {
111+
this.add(new FloatNode(f));
112+
return this;
113+
}
114+
115+
public ArrayNode add(boolean b) {
116+
this.add(new BooleanNode(b));
117+
return this;
118+
}
87119
}

src/main/java/club/someoneice/json/node/MapNode.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,4 +114,34 @@ public static MapNode fromMap(Map<String, Object> map) {
114114
.forEach(it -> node.put(it.getKey(), it.getValue()));
115115
return node;
116116
}
117+
118+
public MapNode put(String name, String str) {
119+
this.put(name, new StringNode(str));
120+
return this;
121+
}
122+
123+
public MapNode put(String name, int i) {
124+
this.put(name, new IntegerNode(i));
125+
return this;
126+
}
127+
128+
public MapNode put(String name, long l) {
129+
this.put(name, new LongNode(l));
130+
return this;
131+
}
132+
133+
public MapNode put(String name, double d) {
134+
this.put(name, new DoubleNode(d));
135+
return this;
136+
}
137+
138+
public MapNode put(String name, float f) {
139+
this.put(name, new FloatNode(f));
140+
return this;
141+
}
142+
143+
public MapNode put(String name, boolean b) {
144+
this.put(name, new BooleanNode(b));
145+
return this;
146+
}
117147
}

src/main/java/club/someoneice/json/processor/Json5Builder.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public String build() {
4040

4141
private String build(IJson5Bean bean, int ct) {
4242
StringBuilder builder = new StringBuilder();
43-
builder.append("\r\n");
43+
builder.append("\n");
4444
if (!bean.isMap()) {
4545
arrayBuilder(builder, ct, bean);
4646
} else {
@@ -64,34 +64,34 @@ private void arrayBuilder(StringBuilder builder, int ct, IJson5Bean bean) {
6464

6565
for (int i = 0; i < count - 1; i++) builder.append(JsonParser.SP);
6666
}
67-
builder.append("\r\n");
67+
builder.append("\n");
6868
for (int i = 0; i < count - 1; i++) builder.append(JsonParser.SP);
6969
builder.append("]");
7070
}
7171

7272
private void arrayCommand(Iterator<Pair<IJson5Bean.COMMAND, JsonNode<?>>> iterator, StringBuilder builder, Pair<IJson5Bean.COMMAND, JsonNode<?>> pair, int count) {
7373
switch (pair.getKey()) {
7474
case NODE: {
75-
builder.append("\r\n");
75+
builder.append("\n");
7676
builder.append(JsonBuilder.prettyPrint(JsonBuilder.asString(pair.getValue()), count));
7777
if (iterator.hasNext()) builder.append(",");
7878
break;
7979
}
8080

8181
case COMMIT: {
82-
builder.append("\r\n");
82+
builder.append("\n");
8383
builder.append("//").append(pair.getValue().toString());
8484
break;
8585
}
8686

8787
case LINE: {
88-
builder.append("\r\n");
88+
builder.append("\n");
8989
break;
9090
}
9191

9292
case MAP:
9393
case ARRAY: {
94-
builder.append("\r\n");
94+
builder.append("\n");
9595
builder.append(build((IJson5Bean) pair.getValue(), count));
9696
if (iterator.hasNext()) builder.append(",");
9797
break;
@@ -111,7 +111,7 @@ private void mapBuilder(StringBuilder builder, int ct, IJson5Bean bean) {
111111
for (int i = 0; i < count - 1; i++) builder.append(JsonParser.SP);
112112
}
113113

114-
builder.append("\r\n");
114+
builder.append("\n");
115115
for (int i = 0; i < count - 1; i++) builder.append(JsonParser.SP);
116116
builder.append("}");
117117
}
@@ -120,7 +120,7 @@ private void mapCommand(Iterator<Pair<IJson5Bean.COMMAND, Pair<String, JsonNode<
120120
switch (pair.getKey()) {
121121

122122
case NODE: {
123-
builder.append("\r\n");
123+
builder.append("\n");
124124
for (int i = 0; i < count; i++) builder.append(JsonParser.SP);
125125
builder.append(pair.getValue().getKey()).append(": ");
126126
if (pair.getValue().getValue().getType() == JsonNode.NodeType.Array || pair.getValue().getValue().getType() == JsonNode.NodeType.Map) {
@@ -132,20 +132,20 @@ private void mapCommand(Iterator<Pair<IJson5Bean.COMMAND, Pair<String, JsonNode<
132132
}
133133

134134
case COMMIT: {
135-
builder.append("\r\n");
135+
builder.append("\n");
136136
for (int i = 0; i < count; i++) builder.append(JsonParser.SP);
137137
builder.append("//").append(pair.getValue().getKey());
138138
break;
139139
}
140140

141141
case LINE: {
142-
builder.append("\r\n");
142+
builder.append("\n");
143143
break;
144144
}
145145

146146
case MAP:
147147
case ARRAY: {
148-
builder.append("\r\n");
148+
builder.append("\n");
149149
for (int i = 0; i < count; i++) builder.append(JsonParser.SP);
150150
builder.append(pair.getValue().getKey()).append(": ").append(build((IJson5Bean) pair.getValue().getValue(), count));
151151
if (iterator.hasNext()) builder.append(",");
@@ -167,7 +167,7 @@ String prettyPrintWithoutFirstLine(String node, int ct) {
167167
int count = ct + 1;
168168
char[] charList = node.toCharArray();
169169
builder.append(charList[0]);
170-
builder.append("\r\n");
170+
builder.append("\n");
171171
if (count > 0) for (int i = 0; i < count; i++) builder.append(JsonParser.SP);
172172
for (int o = 1; o < charList.length; o++) {
173173
char c = charList[o];

src/main/java/club/someoneice/json/processor/JsonBuilder.java

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public static String prettyPrint(String node, int ct) {
4848
StringBuilder builder = new StringBuilder();
4949
int count = ct;
5050
char[] charList = node.toCharArray();
51-
if (count > 0) for (int i = 0; i < count; i++) builder.append(JsonParser.SP);
51+
for (int i = 0; i < count; i++) builder.append(JsonParser.SP);
5252
for (char c : charList) {
5353
count = checkAndPut(builder, count, c);
5454
}
@@ -57,30 +57,40 @@ public static String prettyPrint(String node, int ct) {
5757
}
5858

5959
static int checkAndPut(StringBuilder builder, int count, char c) {
60-
if (c == JsonParser.KEY_NEXT) {
61-
builder.append(c).append("\r\n");
62-
if (count > 0) for (int i = 0; i < count; i++) builder.append(JsonParser.SP);
63-
} else if (c == JsonParser.KEY_ARRAY_START) {
64-
builder.append(c).append("\r\n");
65-
if (count > 0) for (int i = 0; i < count; i++) builder.append(JsonParser.SP);
60+
switch (c) {
61+
case JsonParser.KEY_NEXT:
62+
builder.append(c).append("\n");
63+
for (int i = 0; i < count; i++) {
64+
builder.append(JsonParser.SP);
65+
}
66+
break;
67+
68+
case JsonParser.KEY_MAP_START:
69+
case JsonParser.KEY_ARRAY_START:
70+
builder.append(c).append("\n");
6671
++count;
67-
} else if (c == JsonParser.KEY_ARRAY_END) {
68-
--count;
69-
builder.append("\r\n");
70-
if (count > 0) for (int i = 0; i < count; i++) builder.append(JsonParser.SP);
71-
builder.append(c);
72-
} else if (c == JsonParser.KEY_MAP_START) {
73-
builder.append(c).append("\r\n");
74-
if (count > 0) for (int i = 0; i < count; i++) builder.append(JsonParser.SP);
75-
++count;
76-
} else if (c == JsonParser.KEY_MAP_END) {
72+
for (int i = 0; i < count; i++) {
73+
builder.append(JsonParser.SP);
74+
}
75+
break;
76+
77+
case JsonParser.KEY_MAP_END:
78+
case JsonParser.KEY_ARRAY_END:
7779
--count;
78-
builder.append("\r\n");
79-
if (count > 0) for (int i = 0; i < count; i++) builder.append(JsonParser.SP);
80+
builder.append("\n");
81+
for (int i = 0; i < count; i++) {
82+
builder.append(JsonParser.SP);
83+
}
8084
builder.append(c);
81-
} else if (c == JsonParser.KEY_VALUE) {
85+
break;
86+
87+
case JsonParser.KEY_VALUE:
8288
builder.append(c).append(" ");
83-
} else builder.append(c);
89+
break;
90+
91+
default:
92+
builder.append(c);
93+
}
8494
return count;
8595
}
8696

@@ -95,7 +105,7 @@ private static void whileToBuildString(StringBuilder builder, Iterator<String> i
95105
while (itor.hasNext()) {
96106
String key = itor.next();
97107
JsonNode<?> value = map.get(key);
98-
builder.append(key).append(":");
108+
builder.append(String.format("\"%s\"", key)).append(":");
99109
createAndAppend(builder, value, itor.hasNext());
100110
}
101111
}
Lines changed: 13 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,21 @@
11
package club.someoneice.test;
22

3-
import club.someoneice.json.JSON;
4-
import club.someoneice.json.node.JsonNode;
5-
import club.someoneice.json.processor.Json5Builder;
6-
import com.google.common.annotations.Beta;
7-
import com.google.common.base.Stopwatch;
8-
import com.google.common.io.Files;
3+
import club.someoneice.json.node.ArrayNode;
4+
import club.someoneice.json.node.MapNode;
5+
import club.someoneice.json.node.StringNode;
6+
import club.someoneice.json.processor.JsonBuilder;
97

10-
import java.io.File;
11-
import java.io.IOException;
8+
public class TestJson {
9+
public static void main(String[] args) {
10+
MapNode map = new MapNode();
1211

13-
@Beta
14-
public final class TestJson {
15-
static JSON json = JSON.json5;
12+
ArrayNode node = new ArrayNode();
13+
node.add(new StringNode("test"));
1614

17-
public static void main(String[] args) throws IOException {
18-
File file = new File("./Json.json5");
15+
map.put("array", node);
16+
map.put("test", new StringNode("test"));
1917

20-
Stopwatch watch = Stopwatch.createStarted();
21-
22-
if (!file.exists() || !file.isFile()) file.createNewFile();
23-
Json5Builder builder = new Json5Builder();
24-
Json5Builder.ObjectBean mapBean = builder.getObjectBean();
25-
Json5Builder.ArrayBean arrayBeanInMap = builder.getArrayBean();
26-
Json5Builder.ObjectBean mapBeanInMap = builder.getObjectBean();
27-
28-
mapBean.put("boolean1", new JsonNode<>(true));
29-
mapBean.put("boolean2", new JsonNode<>(false));
30-
mapBean.put("String", new JsonNode<>("This is String"));
31-
32-
arrayBeanInMap.add(new JsonNode<>("This is an Array"));
33-
mapBeanInMap.put("String", new JsonNode<>("This is a Map"));
34-
35-
mapBean.enterLine();
36-
37-
mapBean.addBean("Array", arrayBeanInMap);
38-
mapBean.addBean("Map", mapBeanInMap);
39-
40-
mapBean.enterLine();
41-
42-
mapBean.addNote("This is the comment");
43-
builder.put(mapBean);
44-
Files.write(builder.build().getBytes(), file);
45-
System.out.println(watch);
46-
watch.stop();
18+
String out = JsonBuilder.prettyPrint(map);
19+
System.out.println(out);
4720
}
4821
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package club.someoneice.test;
2+
3+
import club.someoneice.json.JSON;
4+
import club.someoneice.json.node.JsonNode;
5+
import club.someoneice.json.processor.Json5Builder;
6+
import com.google.common.annotations.Beta;
7+
import com.google.common.base.Stopwatch;
8+
import com.google.common.io.Files;
9+
10+
import java.io.File;
11+
import java.io.IOException;
12+
13+
@Beta
14+
public final class TestJson5 {
15+
static JSON json = JSON.json5;
16+
17+
public static void main(String[] args) throws IOException {
18+
File file = new File("./Json.json5");
19+
20+
Stopwatch watch = Stopwatch.createStarted();
21+
22+
if (!file.exists() || !file.isFile()) file.createNewFile();
23+
Json5Builder builder = new Json5Builder();
24+
Json5Builder.ObjectBean mapBean = builder.getObjectBean();
25+
Json5Builder.ArrayBean arrayBeanInMap = builder.getArrayBean();
26+
Json5Builder.ObjectBean mapBeanInMap = builder.getObjectBean();
27+
28+
mapBean.put("boolean1", new JsonNode<>(true));
29+
mapBean.put("boolean2", new JsonNode<>(false));
30+
mapBean.put("String", new JsonNode<>("This is String"));
31+
32+
arrayBeanInMap.add(new JsonNode<>("This is an Array"));
33+
mapBeanInMap.put("String", new JsonNode<>("This is a Map"));
34+
35+
mapBean.enterLine();
36+
37+
mapBean.addBean("Array", arrayBeanInMap);
38+
mapBean.addBean("Map", mapBeanInMap);
39+
40+
mapBean.enterLine();
41+
42+
mapBean.addNote("This is the comment");
43+
builder.put(mapBean);
44+
Files.write(builder.build().getBytes(), file);
45+
System.out.println(watch);
46+
watch.stop();
47+
}
48+
}

0 commit comments

Comments
 (0)