2015-02-25 3 views

ответ

5

Один из способов, вы можете сделать это:

import play.api.libs.json.{JsObject, Json} 

val errors = """{"errors":{"password":["This field is required"],"email":["This field is required"]}}""" 
val errorsCount = Json.parse(errors). 
    asOpt[JsObject]. 
    flatMap(json => (json \ "errors").asOpt[JsObject]). 
    map(json => json.fields.size).getOrElse(0) 
+0

Я скопировал точно ваш код, и он дает мне ошибку: java.lang.OutOfMemoryError: Metaspace –

+0

Основная причина для «java.lang.OutOfMemoryError: Metaspace»: слишком много классов или слишком больших классов загружаются в Metaspace , Вы можете указать Metaspace явно с помощью -XX: MaxMetaspaceSize =? M, чтобы решить вашу проблему. Я запускаю JVM без дополнительных конфигураций, поэтому я не уверен, почему это не работает для вас. – mavarazy

+0

https://plumbr.eu/outofmemoryerror/metaspace – mavarazy

-1
var a = { 
    "errors": { 
     "password": [ 
      "This field is required" 
     ], 
     "email": [ 
      "This field is required" 
     ] 
    } 
}; 

Object.keys(a.errors).length; 
+0

Это, кажется, вы даете код JavaScript. Я использую Play Framework в scala. –