Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Converting JsonValue to String #39

Open
heykirby opened this issue Jan 23, 2024 · 9 comments
Open

Converting JsonValue to String #39

heykirby opened this issue Jan 23, 2024 · 9 comments

Comments

@heykirby
Copy link

Simdjson cannot compress structures
for example json
{ "field1": { "field2": "xx" } }
I cannot get the compressed value for field1, value is { "field2": "xx" }

@piotrrzysko
Copy link
Member

Do I understand correctly that you would like to read the value of field1 as a string? Something like this:

JsonValue json = parser.parse(...);
Iterator<Map.Entry<String, JsonValue>> it = json.objectIterator();
Map.Entry<String, JsonValue> field1 = it.next();
System.out.println(field1.getValue().asString()); // this prints '{ "field2": "xx" }'

@heykirby
Copy link
Author

heykirby commented Feb 20, 2024

yes, it looks like simdjson has implemented this capability,thanks

@andyglow
Copy link

andyglow commented Feb 21, 2024

for me field1.getValue().asString() doesn't work if the value is either <array> or <object>
gets me something like this instead

Caused by: java.lang.StringIndexOutOfBoundsException: Range [3198, 3198 + 1952541807) out of bounds for length 35651584
         at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:55)
         at java.base/jdk.internal.util.Preconditions$1.apply(Preconditions.java:52)
         at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:213)
         at java.base/jdk.internal.util.Preconditions$4.apply(Preconditions.java:210)
         at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:98)
         at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckFromIndexSize(Preconditions.java:118)
         at java.base/jdk.internal.util.Preconditions.checkFromIndexSize(Preconditions.java:397)
         at java.base/java.lang.String.checkBoundsOffCount(String.java:4849)
         at java.base/java.lang.String.<init>(String.java:522)
         at org.simdjson.JsonValue.getString(JsonValue.java:87)
         at org.simdjson.JsonValue.asString(JsonValue.java:81)

@piotrrzysko
Copy link
Member

The snippet I provided in the previous comment was just to verify if I understand the issue correctly. I'm not saying that currently this line works according to the comment:

System.out.println(field1.getValue().asString()); // this prints '{ "field2": "xx" }'

@andyglow
Copy link

gotcha. are there plans to make asString handle these scenarios, @piotrrzysko ?
in some cases it would be great to be able to reuse original slice of buffer to stringify the value instead of building a new one traversing the value

@piotrrzysko
Copy link
Member

I think we can try to add it. However, I'm currently busy working on #35, so I can't promise when I'll be able to do that.

@andyglow
Copy link

andyglow commented Mar 5, 2024

I see. That would be wonderful if you could make it happen at some point. I'll be waiting for it :)

@andyglow
Copy link

andyglow commented Sep 9, 2024

hello @piotrrzysko. a gentle reminder that this feature still highly anticipated and appreciated :)

@heykirby
Copy link
Author

heykirby commented Oct 8, 2024

@andyglow refer to #59 ,it works for us,and might work for you too

@piotrrzysko piotrrzysko changed the title Simdjson cannot compress structures Converting JsonValue to String Oct 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants