在Scala中从json字符串中提取字段时出现JsonPath问题

时间:2018-01-04 10:23:08

标签: scala jsonpath

我有一个json字符串,我想在scala中使用JsonPath从这个json中提取一个参数。鉴于Json:

{
    "message_version":"2.0",
    "message":"1.0",
    "message_metadata":{
        \"event_type\":\"MerchantRegistrationFraudEvaluation\",
        \"event_date\":\"1513665186657\"
        }
}

当我尝试使用以下代码提取" event_type"从这个json字符串,它抛出一个异常:

val eventType = JsonPath.read[String](jsonString, "$.message_metadata.event_type")

例外:

com.jayway.jsonpath.PathNotFoundException: Expected to find an object with property ['event_type'] in path $['message_metadata'] but found 'java.lang.String'. This is not a json object according to the JsonProvider: 'com.jayway.jsonpath.spi.json.JsonSmartJsonProvider'

但是如果我使用两个单独的语句,一个首先提取message_metadata,然后另一个提取event_type,如下所示,它可以正常工作:

val eventMetaData = JsonPath.read[String](message, "$.message_metadata")  val eventType = JsonPath.read[String](eventMetaData, "$.event_type") eventType // MerchantRegistrationFraudEvaluation.

有人可以帮忙将event_type放在一行吗?

0 个答案:

没有答案