Title: Concerns regarding the way jsoniter is implemented for high performance parsing · Issue #342 · json-iterator/java · GitHub
Open Graph Title: Concerns regarding the way jsoniter is implemented for high performance parsing · Issue #342 · json-iterator/java
X Title: Concerns regarding the way jsoniter is implemented for high performance parsing · Issue #342 · json-iterator/java
Description: So my pom.xml has following dependencies: Open Graph Description: So my pom.xml has following dependencies: X Description: So my pom.xml has following dependencies: <dependency> <groupId>com.jsoniter</groupId> <artifactId>jsoniter</artifactId> <version>0.9.23</version> </dep...
Opengraph URL: https://github.com/json-iterator/java/issues/342
X: @github
Domain: patch-diff.githubusercontent.com
Links:
Viewport: width=device-width
Hey, it has json ld scripts:
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Concerns regarding the way jsoniter is implemented for high performance parsing","articleBody":"So my pom.xml has following dependencies:\r\n```\r\n\u003cdependency\u003e\r\n \u003cgroupId\u003ecom.jsoniter\u003c/groupId\u003e\r\n \u003cartifactId\u003ejsoniter\u003c/artifactId\u003e\r\n \u003cversion\u003e0.9.23\u003c/version\u003e\r\n\u003c/dependency\u003e\r\n\r\n\u003cdependency\u003e\r\n \u003cgroupId\u003eorg.javassist\u003c/groupId\u003e\r\n \u003cartifactId\u003ejavassist\u003c/artifactId\u003e\r\n \u003cversion\u003e3.29.2-GA\u003c/version\u003e\r\n\u003c/dependency\u003e\r\n```\r\n\r\nFollowing is a class I wrote to do a simple test with _**javaassist**_ enabled\r\n\r\n```\r\npublic class Json {\r\n public static void main(String[] args) {\r\n\r\n\r\n System.out.println(JsoniterSpi.getDefaultConfig().decodingMode()); // REFLECTION_MODE\r\n System.out.println(JsoniterSpi.getDefaultConfig().encodingMode()); // REFLECTION_MODE\r\n\r\n JsonIterator.setMode(DecodingMode.DYNAMIC_MODE_AND_MATCH_FIELD_WITH_HASH);\r\n JsonStream.setMode(EncodingMode.DYNAMIC_MODE);\r\n\r\n String json = \"{\\\"id\\\":1,\\\"name\\\":{\\\"firstName\\\":\\\"Joe\\\",\\\"surname\\\":\\\"Blogg\\\"}}\";\r\n\r\n Student student = JsonIterator.deserialize(json, Student.class); // decoding to Student.class\r\n\r\n Any any = JsonIterator.deserialize(json); // decoding to any\r\n\r\n System.out.println(student);\r\n System.out.println(any);\r\n }\r\n\r\n @ToString\r\n public static class Name {\r\n private String firstName;\r\n public String surname;\r\n }\r\n\r\n @ToString\r\n public static class Student {\r\n public int id;\r\n public Name name;\r\n }\r\n}\r\n```\r\n\r\nI got the following answer:\r\n```\r\nREFLECTION_MODE\r\nREFLECTION_MODE\r\nJson.Student(id=1, name=Json.Name(firstName=null, surname=Blogg))\r\n{\"id\":1,\"name\":{\"firstName\":\"Joe\",\"surname\":\"Blogg\"}}\r\n```\r\n\r\nMy key takeaways:\r\n\r\n1. By default REFLECTION_MODE is used\r\n2. When javaassist is added, I have to enable flags to open java modules. For example, `--add-opens java.base/java.lang=ALL-UNNAMED`\r\n3. The attributes of a class should be public if we serialize/deserialize using javaassist \r\n\r\n**Question 1:**\r\nI need to verify above points and whether or not I understand them correctly. I need the absolute fastest possible encoding/decoding speeds. _Is the way I utilized above libraries correct?_\r\n\r\n**Question 2:**\r\nSuppose I just want to use simple lazy parsing with Any like this: `Any any = JsonIterator.deserialize(json);`, _does javaassist still make a difference in speed here?_ Provided I do not map to any of my clsses. Just keep deserializing to Any object and use it like a Hashmap. In simple terms I only want to use **Any** and **Iterator** APIs. _Do I still need javaassist to get the performance boost?_\r\n\r\nSources:\r\n1. https://www.sitepoint.com/php-style-json-parsing-in-java-with-jsoniter/\r\n2. https://www.baeldung.com/java-jsoniter","author":{"url":"https://github.com/ahrooran-r","@type":"Person","name":"ahrooran-r"},"datePublished":"2023-04-07T18:55:11.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/342/java/issues/342"}
route-pattern /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) route-controller voltron_issues_fragments route-action issue_layout fetch-nonce v2:528e039c-491f-bd0a-fd0a-cadc79b228f0 current-catalog-service-hash 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 request-id B3D0:19E8FE:28630EA:3743DE2:69709C8E html-safe-nonce 61c6feb754becf389330fa459aa80b2781a6152bda9c4c9fd3958f83e9b4ffdb visitor-payload eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCM0QwOjE5RThGRToyODYzMEVBOjM3NDNERTI6Njk3MDlDOEUiLCJ2aXNpdG9yX2lkIjoiNDQ5OTg5NjI0MjA0ODkwMDIzOCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 visitor-hmac 0d547988dddbfa5135b8186453850c51502949772e4ba4efc30b3ff230bf402f hovercard-subject-tag issue:1659094931 github-keyboard-shortcuts repository,issues,copilot google-site-verification Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I octolytics-url https://collector.github.com/github/collect analytics-location / fb:app_id 1401488693436528 apple-itunes-app app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/json-iterator/java/342/issue_layout twitter:image https://opengraph.githubassets.com/52aa4a0e01d3aad9e7e08e117345cbdd2eb8325eef8d3202af7ce139c90b29a9/json-iterator/java/issues/342 twitter:card summary_large_image og:image https://opengraph.githubassets.com/52aa4a0e01d3aad9e7e08e117345cbdd2eb8325eef8d3202af7ce139c90b29a9/json-iterator/java/issues/342 og:image:alt So my pom.xml has following dependencies: og:image:width 1200 og:image:height 600 og:site_name GitHub og:type object og:author:username ahrooran-r hostname github.com expected-hostname github.com None 9920a62ba22d06470388e2904804fb7e5ec51c9e35f81784e9191394c74b2bd2 turbo-cache-control no-preview go-import github.com/json-iterator/java git https://github.com/json-iterator/java.git octolytics-dimension-user_id 24260074 octolytics-dimension-user_login json-iterator octolytics-dimension-repository_id 75621695 octolytics-dimension-repository_nwo json-iterator/java octolytics-dimension-repository_public true octolytics-dimension-repository_is_fork false octolytics-dimension-repository_network_root_id 75621695 octolytics-dimension-repository_network_root_nwo json-iterator/java turbo-body-classes logged-out env-production page-responsive disable-turbo false browser-stats-url https://api.github.com/_private/browser/stats browser-errors-url https://api.github.com/_private/browser/errors release 7d6181066430cc06553c8396ca201e194ae33cb9 ui-target full theme-color #1e2327 color-scheme light dark
URLs of crawlers that visited me.