Skip to content

Commit 68990b2

Browse files
committed
fix #145 add Any.registerEncoders
1 parent 855792e commit 68990b2

File tree

8 files changed

+24
-2
lines changed

8 files changed

+24
-2
lines changed

demo/pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>com.jsoniter</groupId>
5-
<version>0.9.19-SNAPSHOT</version>
5+
<version>0.9.21-SNAPSHOT</version>
66
<artifactId>jsoniter-demo</artifactId>
77
<name>json iterator demo</name>
88
<description>jsoniter (json-iterator) is fast and flexible JSON parser available in Java and Go</description>
@@ -49,7 +49,7 @@
4949
<dependency>
5050
<groupId>com.jsoniter</groupId>
5151
<artifactId>jsoniter</artifactId>
52-
<version>0.9.19-SNAPSHOT</version>
52+
<version>0.9.21-SNAPSHOT</version>
5353
</dependency>
5454
<dependency>
5555
<groupId>org.openjdk.jmh</groupId>

demo/src/main/java/com/jsoniter/demo/Demo.java

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.jsoniter.demo;
22

33
import com.jsoniter.JsonIterator;
4+
import com.jsoniter.any.Any;
45
import com.jsoniter.output.EncodingMode;
56
import com.jsoniter.output.JsonStream;
67
import com.jsoniter.spi.DecodingMode;
@@ -16,6 +17,7 @@ public static void main(String[] args) {
1617
System.out.println(user.firstName);
1718
System.out.println(user.lastName);
1819
System.out.println(user.score);
20+
user.attachment = Any.wrapArray(new int[]{1, 2, 3});
1921
System.out.println(JsonStream.serialize(user));
2022
}
2123
}

demo/src/main/java/com/jsoniter/demo/DemoCodegenConfig.java

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.jsoniter.demo;
22

33
import com.jsoniter.JsonIterator;
4+
import com.jsoniter.any.Any;
45
import com.jsoniter.output.EncodingMode;
56
import com.jsoniter.output.JsonStream;
67
import com.jsoniter.spi.Decoder;
@@ -19,6 +20,7 @@ public class DemoCodegenConfig implements StaticCodegenConfig {
1920
public void setup() {
2021
// register custom decoder or extensions before codegen
2122
// so that we doing codegen, we know in which case, we need to callback
23+
Any.registerEncoders();
2224
JsonIterator.setMode(DecodingMode.STATIC_MODE);
2325
JsonStream.setMode(EncodingMode.STATIC_MODE);
2426
JsonStream.setIndentionStep(2);
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package com.jsoniter.demo;
22

33
import com.jsoniter.annotation.JsonProperty;
4+
import com.jsoniter.any.Any;
45

56
public class User {
67
@JsonProperty(nullable = false)
78
public String firstName;
89
@JsonProperty(nullable = false)
910
public String lastName;
1011
public int score;
12+
public Any attachment;
1113
}

demo/src/main/java/jsoniter_codegen/cfg1173796797/decoder/com/jsoniter/demo/User.java

+5
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,12 @@ public class User implements com.jsoniter.spi.Decoder {
3030
java.lang.String _firstName_ = null;
3131
java.lang.String _lastName_ = null;
3232
int _score_ = 0;
33+
com.jsoniter.any.Any _attachment_ = null;
3334
do {
3435
switch (com.jsoniter.CodegenAccess.readObjectFieldAsHash(iter)) {
36+
case -1513391000:
37+
_attachment_ = (com.jsoniter.any.Any)iter.readAny();
38+
continue;
3539
case -1078100014:
3640
_lastName_ = (java.lang.String)iter.readString();
3741
continue;
@@ -48,6 +52,7 @@ public class User implements com.jsoniter.spi.Decoder {
4852
obj.firstName = _firstName_;
4953
obj.lastName = _lastName_;
5054
obj.score = _score_;
55+
obj.attachment = _attachment_;
5156
return obj;
5257
}public java.lang.Object decode(com.jsoniter.JsonIterator iter) throws java.io.IOException {
5358
return decode_(iter);

demo/src/main/java/jsoniter_codegen/cfg1173796797/encoder/com/jsoniter/demo/User.java

+5
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ public static void encode_(com.jsoniter.demo.User obj, com.jsoniter.output.JsonS
1515
stream.writeMore();
1616
stream.writeObjectField("score");
1717
stream.writeVal((int)obj.score);
18+
stream.writeMore();
19+
stream.writeObjectField("attachment");
20+
if (obj.attachment == null) { stream.writeNull(); } else {
21+
stream.writeVal((com.jsoniter.any.Any)obj.attachment);
22+
}
1823
stream.writeObjectEnd();
1924
}
2025
}

src/main/java/com/jsoniter/any/Any.java

+4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@
1313
public abstract class Any implements Iterable<Any> {
1414

1515
static {
16+
registerEncoders();
17+
}
18+
19+
public static void registerEncoders() {
1620
Encoder.ReflectionEncoder anyEncoder = new Encoder.ReflectionEncoder() {
1721
@Override
1822
public void encode(Object obj, JsonStream stream) throws IOException {

src/test/java/com/jsoniter/any/TestArray.java

+2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package com.jsoniter.any;
22

33
import com.jsoniter.JsonIterator;
4+
import com.jsoniter.output.EncodingMode;
5+
import com.jsoniter.output.JsonStream;
46
import junit.framework.TestCase;
57

68
import java.util.ArrayList;

0 commit comments

Comments
 (0)