Comments (7)
Any ideas why this might be happening? I'd be willing to help create a fix if I could get some pointers. Thanks!
from jackson-jq.
@btiernay I'm sorry to have kept you waiting, I'll try to look closely into the problem this weekend.
from jackson-jq.
Sorry for my late response, I'm currently working on a fix.
The problem was that we cannot determine which part of an input JsonNode to update because in the current implementation we only handled a simple FieldAccess like .a[0].a
in assignments.
In btiernay's example, we have an input {"x": 1}
and (..|numbers)
evaluates to 1
. Then we apply += 1
against 1
and get 2
. But where in {"x": 1}
we should put this 2
back, we do not know now.
I'm trying to fix this by creating a simple wrapper around JsonNode and wrapping an input before evaluating assignment expressions. So far (..|numbers) += 1
worked, but test cases (such as jq '.[1] = 1' <<< '[]'
, in which a non-existent element of an input array or object is accessed) started to fail and still working on a fix.
from jackson-jq.
Thanks for your support, much appreciated!
from jackson-jq.
I am facing a similar issue. Do we have a solution for this? My rule works fine in jqplay but I get this error in java.
net.thisptr.jackson.jq.exception.IllegalJsonArgumentException: left hand side must be FieldAccess
at net.thisptr.jackson.jq.internal.tree.binaryop.assignment.UpdateAssignment.apply(UpdateAssignment.java:28)
at net.thisptr.jackson.jq.internal.tree.PipedQuery.applyRecursive(PipedQuery.java:42)
at net.thisptr.jackson.jq.internal.tree.PipedQuery.apply(PipedQuery.java:25)
at net.thisptr.jackson.jq.internal.IsolatedScopeQuery.apply(IsolatedScopeQuery.java:21)
at net.thisptr.jackson.jq.JsonQuery.apply(JsonQuery.java:20)
from jackson-jq.
It worked for me by making this change in the rule
(. |= (. + if has("dataSource") then {("newDataSource"): .dataSource} else . end)) | del(.dataSource)
New rule:
(. + if has("dataSource") then {("newDataSource"): .dataSource} else . end) | del(.dataSource)
from jackson-jq.
This long-standing issue has been resolved in 1.0.0-preview.* versions.
from jackson-jq.
Related Issues (20)
- Shadow JAR causes exception HOT 3
- Complex Assignment not working HOT 2
- Publish Scope as a CDI bean and make ObjectMapper injectable
- [Announcement] Introducing Quarkus Extension for Jackson JQ HOT 1
- Stackoverflow error HOT 2
- Improved quarkus support: add jandex indexes HOT 2
- Improved quarkus support: make the jq json node model public HOT 3
- Improved extensibility: add an official JqFunction annotation
- Change scope constructor from private to protected HOT 3
- brew install jackson-jq Error: jackson-jq: wrong number of arguments (given 1, expected 0)
- 3 * "-" HOT 2
- -f option
- How to use --raw-output option from Java? HOT 3
- Update jackson-databind to 2.13.4.1 at least in order to fix vulnerabilities CVE-2022-42004 and CVE-2022-42003 HOT 7
- test with digit class of character throws an exception from jcodings HOT 1
- gsub's implementation causes stack overflows
- Support for fromdateiso8601 and todateiso8601 HOT 1
- Add uuid5 in "jackson-jq/extras" module
- Release 1.0.0
- "del" not working properly HOT 2
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 jackson-jq.