/src/test/java/com/alibaba/json/test/JsonIteratorImageTest.java

https://github.com/alibaba/fastjson · Java · 105 lines · 81 code · 14 blank · 10 comment · 10 complexity · 200ef427e87e7db829dc02070fa7e4d3 MD5 · raw file

  1. package com.alibaba.json.test;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONException;
  4. import com.alibaba.fastjson.parser.DefaultJSONParser;
  5. import com.alibaba.fastjson.parser.JSONLexerBase;
  6. import com.alibaba.fastjson.parser.JSONToken;
  7. import com.alibaba.fastjson.parser.ParserConfig;
  8. import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
  9. import com.jsoniter.JsonIterator;
  10. import com.jsoniter.spi.TypeLiteral;
  11. import junit.framework.TestCase;
  12. import java.lang.reflect.Type;
  13. /**
  14. * Created by wenshao on 27/12/2016.
  15. */
  16. public class JsonIteratorImageTest extends TestCase {
  17. 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}";
  18. private byte[] inputBytes = input.getBytes();
  19. private TypeLiteral<Model> modelTypeLiteral; // this is thread-safe can reused
  20. private JsonIterator iter;
  21. private int COUNT = 1000 * 1000 * 1;
  22. protected void setUp() throws Exception {
  23. inputBytes = input.getBytes();
  24. iter = new JsonIterator();
  25. modelTypeLiteral = new TypeLiteral<Model>() {
  26. };
  27. }
  28. public void test_for_iterator() throws Exception {
  29. iter.reset(inputBytes);
  30. Model m2 = iter.read(modelTypeLiteral);
  31. fastjson();
  32. for (int i = 0; i < 5; ++i) {
  33. long startMillis = System.currentTimeMillis();
  34. fastjson();
  35. long millis = System.currentTimeMillis() - startMillis;
  36. System.out.println("fastjson : " + millis);
  37. }
  38. // jsoniterator();
  39. // for (int i = 0; i < 5; ++i) {
  40. // long startMillis = System.currentTimeMillis();
  41. // jsoniterator();
  42. // long millis = System.currentTimeMillis() - startMillis;
  43. // System.out.println("jsoniterator : " + millis);
  44. // }
  45. }
  46. private void jsoniterator() throws java.io.IOException {
  47. for (int i = 0; i < COUNT; ++i){
  48. iter.reset(inputBytes);
  49. Model model2 = iter.read(modelTypeLiteral);
  50. }
  51. }
  52. private void fastjson() throws java.io.IOException {
  53. for (int i = 0; i < COUNT; ++i){
  54. Model model2 = JSON.parseObject(input, Model.class);
  55. }
  56. }
  57. public static class Model {
  58. public int id;
  59. public String name;
  60. }
  61. public static Object decode_(JsonIterator iter) throws java.io.IOException {
  62. if (iter.readNull()) {
  63. com.jsoniter.CodegenAccess.resetExistingObject(iter);
  64. return null;
  65. }
  66. JsonIteratorImageTest.Model obj = (com.jsoniter.CodegenAccess.existingObject(iter) == null ? new JsonIteratorImageTest.Model() : (JsonIteratorImageTest.Model)com.jsoniter.CodegenAccess.resetExistingObject(iter));
  67. if (!com.jsoniter.CodegenAccess.readObjectStart(iter)) { return obj; }
  68. switch (com.jsoniter.CodegenAccess.readObjectFieldAsHash(iter)) {
  69. case 926444256:
  70. obj.id = (int)iter.readInt();
  71. break;
  72. case -1925595674:
  73. obj.name = (String)iter.readString();
  74. break;
  75. default:
  76. iter.skip();
  77. }
  78. while (com.jsoniter.CodegenAccess.nextToken(iter) == ',') {
  79. switch (com.jsoniter.CodegenAccess.readObjectFieldAsHash(iter)) {
  80. case 926444256:
  81. obj.id = (int)iter.readInt();
  82. continue;
  83. case -1925595674:
  84. obj.name = (String)iter.readString();
  85. continue;
  86. }
  87. iter.skip();
  88. }
  89. return obj;
  90. }
  91. }