codeniko / jsonpathkt Goto Github PK
View Code? Open in Web Editor NEWA lighter and more efficient implementation of JsonPath in Kotlin
License: BSD 3-Clause "New" or "Revised" License
A lighter and more efficient implementation of JsonPath in Kotlin
License: BSD 3-Clause "New" or "Revised" License
@cburgmer's JSONPath comparison project is currently discussing some issues relating to a proposed implementation of JSONPath known as "Proposal A". May I encourage you to get involved if you are interested in influencing the direction or, indeed, if you want to make your own proposals.
Similarly, please join us in slack (invitation) for informal discussions on the comparison project and potential JSONPath standardisation.
The following queries provide results that do not match those of other implementations of JSONPath
(compare https://cburgmer.github.io/json-path-comparison/):
$[:]
Input:
["first", "second"]
Expected output:
["first", "second"]
Error:
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java (default-cli) on project query: An exception occured while executing the Java class. Index 0 out of bounds for length 0 -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.6.0:java (default-cli) on project query: An exception occured while executing the Java class. Index 0 out of bounds for length 0
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:566)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: org.apache.maven.plugin.MojoExecutionException: An exception occured while executing the Java class. Index 0 out of bounds for length 0
at org.codehaus.mojo.exec.ExecJavaMojo.execute (ExecJavaMojo.java:339)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:566)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
Caused by: java.lang.IndexOutOfBoundsException: Index 0 out of bounds for length 0
at jdk.internal.util.Preconditions.outOfBounds (Preconditions.java:64)
at jdk.internal.util.Preconditions.outOfBoundsCheckIndex (Preconditions.java:70)
at jdk.internal.util.Preconditions.checkIndex (Preconditions.java:248)
at java.util.Objects.checkIndex (Objects.java:372)
at java.util.ArrayList.get (ArrayList.java:458)
at com.nfeld.jsonpathlite.PathCompiler.compileBracket$json_path_lite (PathCompiler.kt:232)
at com.nfeld.jsonpathlite.PathCompiler.compile$json_path_lite (PathCompiler.kt:59)
at com.nfeld.jsonpathlite.JsonPath.<init> (JsonPath.kt:17)
at com.nfeld.jsonpathlite.extension.JSONArrayKt.read (JSONArray.kt:8)
at com.nfeld.jsonpathlite.JsonArray.read (JsonResult.kt:12)
at query.AppKt.main (App.kt:10)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:566)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run (ExecJavaMojo.java:282)
at java.lang.Thread.run (Thread.java:834)
[ERROR]
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
$['key','another']
Input:
{"another": "entry", "key": "value"}
Expected output:
["value", "entry"]
Actual output:
{"key": "value", "another": "entry"}
$.store..price
Input:
{"store": {"book": [{"category": "reference", "price": 8.95, "title": "Sayings of the Century", "author": "Nigel Rees"}, {"category": "fiction", "price": 12.99, "title": "Sword of Honour", "author": "Evelyn Waugh"}, {"category": "fiction", "price": 8.99, "title": "Moby Dick", "isbn": "0-553-21311-3", "author": "Herman Melville"}, {"category": "fiction", "price": 22.99, "title": "The Lord of the Rings", "isbn": "0-395-19395-8", "author": "J. R. R. Tolkien"}], "bicycle": {"color": "red", "price": 19.95}}}
Expected output:
[8.95, 12.99, 8.99, 22.99, 19.95]
Actual output:
[19.95, 8.95, 12.99, 8.99, 22.99]
For reference, the output was generated by the program in https://github.com/cburgmer/json-path-comparison/tree/master/implementations/Kotlin_com.nfeld.jsonpathlite.
Hey,
I'm not really good at either Kotlin or Maven, so I've tripped over
<dependency>
<groupId>com.nfeld.jsonpathlite</groupId>
<artifactId>json-path-lite</artifactId>
<version>1.1.0</version>
<type>pom</type>
</dependency>
If I remove <type>pom</type>
, then Maven will happily compile, otherwise it will fail with
[ERROR] Failed to execute goal org.jetbrains.kotlin:kotlin-maven-plugin:1.3.40:compile (compile) on project query: Compilation failure
[ERROR] /Users/me/query/src/main/java/query/App.kt:[8,27] Unresolved reference: nfeld
Is there a reason for including it?
The currently used version is affected by FasterXML/jackson-databind#2715. Would be nice to see JsonPathKt
version free of this big one day. See PR here: #10.
Running the array slice operator (e.g. $[1:3]
) against an object (e.g. {}
) currently returns null
(see https://cburgmer.github.io/json-path-comparison/results/array_slice_on_object.html#Kotlin_com.nfeld.jsonpathlite).
As a user I would probably expect []
instead, considering the query is supposed to return multiple matches?
For example, I have such JSON
{
"profile": {
"name": "George",
"address": {
"home": "@ubuntu"
}
}
}
when I call JsonPath.parse(jsonText)?.read<String>("$.profile.address")
it returns null. Instead return the object:
[
{
"home": "@ubuntu"
}
]
My usecase is that there is a website im scraping, which returns huge JSON, but I dont want models for all the objects. If I could get those small snippets of JSON then I would be able to serialize them into smaller more useful models.
Hi, is this tool(optimized from JsonPath) supports webflux and netty project?
Hello, given this JSON...
{
"key": {
"value": "root key value"
},
"array": [
{
"name": "name 0",
"content": "content 0",
"key": {
"value": "key value 0"
}
},
{
"name": "name 1",
"content": "content 1",
"key": {
"value": "key value 1"
}
}
]
}
And I read the "array[1]" with these codes
val value = JsonPath.parse(json)?.read<String>("$.array[1].key.value")
Got key value 1
as expected.
val values = JsonPath.parse(json)?.read<List<String>>("$.array[1].['name','content','key.value']")
Got [name 1, content 1]
only not the 3rd one. Expected [name 1, content 1, key value 1]
as a result from this code.
Please investigate. Thank you very much.
If you're not opposed, would you accept a pull request?
(https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/json.md#subtypes-of-json-elements)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.