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: github.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:e05357ac-fa38-d74b-0032-c0a6d9a5a276 current-catalog-service-hash 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 request-id B5F4:2B46F2:3D7313:55D308:696A4F3A html-safe-nonce 87a92c8f5f89d66429f09eaaf0ca1750f7e4fadd7b5bead22df9f48c3199226b visitor-payload eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCNUY0OjJCNDZGMjozRDczMTM6NTVEMzA4OjY5NkE0RjNBIiwidmlzaXRvcl9pZCI6IjExMzY0ODIxOTI2MzI0NjcyNTgiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== visitor-hmac 7dd8e771a426ee11e48ff64c28be3d19439316e367209bd7adb104f260322d35 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 3f871c8e07f0ae1886fa8dac284166d28b09ad5bada6476fc10b674e489788ef 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 63c426b30d262aba269ef14c40e3c817b384cd61 ui-target full theme-color #1e2327 color-scheme light dark
URLs of crawlers that visited me.