2013-08-13 5 views
8

In gioco! (2.2-M2) Ho un JsValue simile a:Come posso contare il numero di JsObjects in un JsValue?

val people: JsValue = [{"name":"Alice","subdomain":"alice","color":"orange"},{"name":"Jorge","subdomain":"jorge","color":"blue"},{"name":"Bob","subdomain":"robert","color":"green"}...] 

Voglio solo il numero di elementi in questa JsValue. Posso capito, clunkily, attraverso

(people \\ "name").size 

ma questo taglia trova all'interno di un metodo che riceve JsValues ​​con contenuti diversi, e name non sarà sempre presente, come

val places: JsValue = [{"country":"UK", "country":"ES", ...] 

o

val things: JsValue = [{"widget":"foo", "price":"1", "widget":"bar" ... ] 

Mi sto tirando i capelli, come faccio a ottenere il numero di elementi in questi JsValue?

risposta

22

Se si desidera contare il numero di oggetti all'interno della matrice, è possibile associarlo a JsArray.

people.as[JsArray].value.size o people.asOpt[JsArray].map(_.value.size).

+0

Grazie grazie grazie, che funziona – JennyDanger