package com.alibaba.json.test;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.parser.DefaultJSONParser;
import com.alibaba.fastjson.parser.JSONLexerBase;
import com.alibaba.fastjson.parser.JSONToken;
import com.alibaba.fastjson.parser.ParserConfig;
import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
import com.jsoniter.JsonIterator;
import com.jsoniter.spi.TypeLiteral;
import junit.framework.TestCase;
import java.lang.reflect.Type;
/**
* Created by wenshao on 27/12/2016.
*/
public class JsonIteratorImageTest extends TestCase {
private String input = "{\"bitrate\":262144,\"duration\":18000000,\"format\":\"video/mpg4\",\"height\":480,\"persons\":[\"Bill Gates\",\"Steve Jobs\"],\"player\":\"JAVA\",\"size\":58982400,\"title\":\"Javaone Keynote\",\"uri\":\"http://javaone.com/keynote.mpg\",\"width\":640}";
private byte[] inputBytes = input.getBytes();
private TypeLiteral<Model> modelTypeLiteral; // this is thread-safe can reused
private JsonIterator iter;
private int COUNT = 1000 * 1000 * 1;
protected void setUp() throws Exception {
inputBytes = input.getBytes();
iter = new JsonIterator();
modelTypeLiteral = new TypeLiteral<Model>() {
};
}
public void test_for_iterator() throws Exception {
iter.reset(inputBytes);
Model m2 = iter.read(modelTypeLiteral);
fastjson();
for (int i = 0; i < 5; ++i) {
long startMillis = System.currentTimeMillis();
fastjson();
long millis = System.currentTimeMillis() - startMillis;
System.out.println("fastjson : " + millis);
}
// jsoniterator();
// for (int i = 0; i < 5; ++i) {
// long startMillis = System.currentTimeMillis();
// jsoniterator();
// long millis = System.currentTimeMillis() - startMillis;
// System.out.println("jsoniterator : " + millis);
// }
}
private void jsoniterator() throws java.io.IOException {
for (int i = 0; i < COUNT; ++i){
iter.reset(inputBytes);
Model model2 = iter.read(modelTypeLiteral);
}
}
private void fastjson() throws java.io.IOException {
for (int i = 0; i < COUNT; ++i){
Model model2 = JSON.parseObject(input, Model.class);
}
}
public static class Model {
public int id;
public String name;
}
public static Object decode_(JsonIterator iter) throws java.io.IOException {
if (iter.readNull()) {
com.jsoniter.CodegenAccess.resetExistingObject(iter);
return null;
}
JsonIteratorImageTest.Model obj = (com.jsoniter.CodegenAccess.existingObject(iter) == null ? new JsonIteratorImageTest.Model() : (JsonIteratorImageTest.Model)com.jsoniter.CodegenAccess.resetExistingObject(iter));
if (!com.jsoniter.CodegenAccess.readObjectStart(iter)) { return obj; }
switch (com.jsoniter.CodegenAccess.readObjectFieldAsHash(iter)) {
case 926444256:
obj.id = (int)iter.readInt();
break;
case -1925595674:
obj.name = (String)iter.readString();
break;
default:
iter.skip();
}
while (com.jsoniter.CodegenAccess.nextToken(iter) == ',') {
switch (com.jsoniter.CodegenAccess.readObjectFieldAsHash(iter)) {
case 926444256:
obj.id = (int)iter.readInt();
continue;
case -1925595674:
obj.name = (String)iter.readString();
continue;
}
iter.skip();
}
return obj;
}
}