Comments (9)
Did you test it? Are sure no any exception would be thrown when calling nextString() following "NUMBER" token?
from jsonsurfer.
Yes, using the attached snippet, it worked as expected. Per the JsonReader.nextString javadoc: If the next token is a number, this method will return its string form
from jsonsurfer.
I think it would introduce too much overhead for the potential two more parsing. If you really need long type, I think you can implement a custom JsonProvider.
from jsonsurfer.
Doing this at the provider level could work, however I believe the core issue is in the parser as that's where its forcing the long into a double via the call to jsonReader.nextDouble()
. By the time it gets to the provider its already been turned into a double. The JsonReader
class does internally keep track of whether its a long or double, but unfortunately it doesn't make that information available to public consumers. I will check if its possible to extend JsonReader to gain access to the peeked
member, which if set to 15
indicates its a long vs a double.
from jsonsurfer.
Unfortunately it looks like JsonReader::peeked
is package scoped and not protected
from jsonsurfer.
Actually, I'm curious about your use case? What kind of benefit can you gain from such conversion?
from jsonsurfer.
The use case is that the json we parse and filter needs to retain its original formatting so that when we do schema inference it doesn't change types from a long to a double.
from jsonsurfer.
So due to such a limitation of Gson, maybe you can try other JsonSurfer implementation, e.g. JacksonSurfer
from jsonsurfer.
Will give it a look, ideally I want an implementation that I can use in a streaming read and provider scenario. As the data is read and filtered with json path, the output is then fed to a provider that is simply streaming out the other side, that way if I hit a massive json document with a json path like $.*
it wouldn't blow up trying to assemble the entire document in memory.
from jsonsurfer.
Related Issues (20)
- [-1:] indexing seems to return wrong elements. HOT 4
- Parsing JSON Sequence HOT 2
- Consider implementing RFC 9535
- Enhancement: Ability to listen to `startObject`/`endObject` tokens HOT 2
- Any way to listen "parsing ended" event? HOT 1
- Add ability to parse 'live' JSON files HOT 2
- JsonPath/SQL standard HOT 1
- The underlying Jackson parser doesn't support BigInteger HOT 4
- Could CollectOneListner be made public now collectOne is deprecated? No simple replacement exists? HOT 4
- Improve filtering on objects (argument matching nested object) HOT 6
- Create JPATH Compare using not equals (!=)
- Gson before 2.8.9 are vulnerable HOT 1
- Support for feeding via bytebuffers HOT 2
- Is it possible to make multiple queries in one jsonPath? HOT 1
- Dependency com.alibaba:fastjson, leading to CVE problem
- Problems using JsonSurfer in projects using a different version of ANTLR HOT 1
- Support for modifying values during non blocking streaming
- Is JsonSurfer thread-safe? HOT 1
- [BUG] Resumable parser does not accept $.[*] HOT 3
- Runtime error: ANTLR Runtime version 4.7.2 used for parser compilation does not match the current runtime version 4.10.1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from jsonsurfer.