groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From John Wagenleitner <john.wagenleit...@gmail.com>
Subject Re: when does JsonSlurper return LazyMap vs LazyValueMap ?
Date Sat, 28 Jan 2017 01:55:23 GMT
On Thu, Jan 26, 2017 at 12:27 PM, garneke <kenton.garner@issinc.com> 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:ml-node+[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.
>

Mime
View raw message