Thank you that helped a lot.
BTW the issue you posted https://issues.apache.org/jira/browse/GROOVY-7532 had
example code to walk the json map object and make hard references to objects (
LAX to Normal )
def slurpOpts = jsonSlurperLAX.parse(new File("test.conf"))
slurpOpts.each {k, v -> configOpts2.put(k, slurpOpts.get(k))}
I have a question about this simple example though. If the json is more
complex and has nested maps this solution would be incomplete correct?
I decided to use the following but I don’t know if it is overkill or even
valid. Any thoughts?
public Map<String, Object> deepCloneJsonMap(Object json){
Map<String, Object> result = new LinkedHashMap();
json.each {k, v ->
if( v instanceof Map )
result.put(k, deepCloneJsonMap(((Map<String,Object>)json).get(k)))
else
result.put(k, ((Map<String,Object>)json).get(k))
}
return result;
}
Thanks again.
From: jwagenleitner [via Groovy]
[mailto:[email protected]]
Sent: Friday, January 27, 2017 8:56 PM
To: Kenton Garner <[email protected]>
Subject: Re: when does JsonSlurper return LazyMap vs LazyValueMap ?
On Thu, Jan 26, 2017 at 12:27 PM, garneke <[hidden
email]</user/SendEmail.jtp?type=node&node=5738176&i=0>> wrote:
Update:
I have determined that the difference in the return type has to do with the
JsonSlurper type. The INDEX_OVERLAY returns a LazyValueMap.
That being said…
What is the correct way to add a node or otherwise modify the LazyValueMap
objects?
I think the easiest way to do this if there are no nested objects is to create
a new Map from the LazyValueMap. If there are no nested objects then the
following would work.
def newMap = new LinkedHashMap(lazyValueMap)
newMap.mediaHash = mediaHash
If there are nested objects then it takes more work as you'd have to
recurse/iterate over each nested LazyValueMap and convert it as well. There's
an issue [1] requesting the ability to convert to a regular map.
[1] https://issues.apache.org/jira/browse/GROOVY-7532
From: garneke [via Groovy] [mailto:[hidden
email]</user/SendEmail.jtp?type=node&node=5738176&i=1>[hidden
email]<http://user/SendEmail.jtp?type=node&node=5738141&i=0>]
Sent: Thursday, January 26, 2017 12:31 PM
To: Kenton Garner <[hidden
email]<http://user/SendEmail.jtp?type=node&node=5738141&i=1>>
Subject: Re: when does JsonSlurper return LazyMap vs LazyValueMap ?
-- Sorry for the first post ( formatting was lost )
Environment: groovy-all-2.4.6
In my environment I am seeing that JsonSlurper returns LazyMap in my test code
using the groovyConsole but it returns a LazyValueMap in my compiled java code.
I am trying to add a node to the json object and it works great in the
groovyConsole but fails in java.
This code works in the groovyConsole...
def slurper = new JsonSlurper()
def json = slurper.parseText( jsonTxt )
json.put("mediaHash", mediaHash)
// -- or --
json."mediaHash" = mediaHash
In the groovyConsole slurper.parseText() returns a LazyMap
But in Java it returns a LazyValueMap and I get the exception ... die("Not that
kind of map");
What is the correct way to add a node and why do I get different results?
Thanks
________________________________
If you reply to this email, your message will be added to the discussion below:
http://groovy.329449.n5.nabble.com/when-does-JsonSlurper-return-LazyMap-vs-LazyValueMap-tp5738132p5738133.html
To unsubscribe from when does JsonSlurper return LazyMap vs LazyValueMap ?,
click here.
NAML<http://groovy.329449.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
________________________________
View this message in context: RE: when does JsonSlurper return LazyMap vs
LazyValueMap
?<http://groovy.329449.n5.nabble.com/when-does-JsonSlurper-return-LazyMap-vs-LazyValueMap-tp5738132p5738141.html>
Sent from the Groovy Users mailing list
archive<http://groovy.329449.n5.nabble.com/Groovy-Users-f329450.html> at
Nabble.com.
________________________________
If you reply to this email, your message will be added to the discussion below:
http://groovy.329449.n5.nabble.com/when-does-JsonSlurper-return-LazyMap-vs-LazyValueMap-tp5738132p5738176.html
To unsubscribe from when does JsonSlurper return LazyMap vs LazyValueMap ?,
click
here<http://groovy.329449.n5.nabble.com/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=5738132&code=a2VudG9uLmdhcm5lckBpc3NpbmMuY29tfDU3MzgxMzJ8LTIwMjIyNDI3NDY=>.
NAML<http://groovy.329449.n5.nabble.com/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml>
--
View this message in context:
http://groovy.329449.n5.nabble.com/when-does-JsonSlurper-return-LazyMap-vs-LazyValueMap-tp5738132p5738425.html
Sent from the Groovy Users mailing list archive at Nabble.com.