2016-09-12 64 views
0

我想這個JSON字符串傳遞給我的另一種方法,但有時我得到這個錯誤,斯卡拉播放的Json JSResultException驗證錯誤

play.api.libs.json.JsResultException: JsResultException(錯誤:列表((,列表(ValidationError(error.expected.jsstring,WrappedArray())))))

我覺得很奇怪,這是隨機發生的,有時我真不明白例外,有時我做的。有任何想法嗎?

這裏是我的JSON是什麼樣子

val string = { 
    "first_name" : { 
    "type" : "String", 
    "value" : "John" 
    }, 
    "id" : { 
    "type" : "String", 
    "value" : "123456789" 
    }, 
    "last_name" : { 
    "type" : "String", 
    "value" : "Smith" 
    } 
} 

我看它像

(string \ "first_name").as[String] 
+1

當你沒有得到異常時,你會得到什麼結果?因爲'first_name'字段的值顯然不僅僅是一個字符串值。 – maks

+0

而'串'不是Json。 –

回答

1

(string \ "first_name")JsValueJsString所以as[String]不起作用。

但是如果你需要first name value,你可以做

val firstName = ((json \ "first_name") \ "value").as[String] 
-1

首先,你不能遍歷字符串對象,讓您的輸入必須轉換爲JsValue能夠穿越它:

val json = Json.parse(string) 

如first_name attribut是JsValue類型而不是字符串所以如果你嘗試提取名字像你一樣的價值,你會得到一個JsResultException

我只能解釋你的FIRST_NAME場JSON結構由拉多姆變化JsResultException的隨機外觀。使您的刺激輸入遍歷始終是固定的名字歸檔結構。