![](/img/trans.png)
[英]scala, read JSON string and return a specific value from the JSON array
[英]Get a specific parameter from a json string using JsonPath in scala
我有一个json字符串,我想在Scala中使用JsonPath从此json提取参数。 鉴于杰森:
{
"message_payload":"6b700b000006",
"message_encryption_version":"2.0",
"message_version":"1.0",
"message_metadata":{
"marketplace_id":"1",
"workflow_id":"5906bd4e-52eb-4e2d-9a16-034fb67572f1",
"hostname":"dev-dsk-shivabo-2b-3c0a1bd6.us-west-2.amazon.com",
"event_type":"MerchantRegistrationFraudEvaluation",
"event_date":"1513665186657"
}
}
我试图使用下面的代码来获取一些示例中找到的参数event_type,但它会引发错误:
val eventType = JsonPath.read(jsonString, "$.message_metadata.event_type")
错误:
error: ambiguous reference to overloaded definition,
[scalac-2.11] both method read in object JsonPath of type [T](x$1: String, x$2: String, x$3: com.jayway.jsonpath.Predicate*)T
[scalac-2.11] and method read in object JsonPath of type [T](x$1: Any, x$2: String, x$3: com.jayway.jsonpath.Predicate*)T
[scalac-2.11] match argument types (String,String)
[scalac-2.11] val eventType = JsonPath.read(jsonString, "$.message_metadata.event_type");
有人可以告诉我我在这里想念什么吗?
您需要给Scala编译器一个提示,以便它能够选择正确的方法:
val eventType = JsonPath.read[String](jsonString, "$.message_metadata.event_type")
这是完整的测试应用程序:
import com.jayway.jsonpath.JsonPath
object TestApp extends App {
val jsonString =
"""{
| "message_payload":"6b700b000006",
| "message_encryption_version":"2.0",
| "message_version":"1.0",
| "message_metadata":{
| "marketplace_id":"1",
| "workflow_id":"5906bd4e-52eb-4e2d-9a16-034fb67572f1",
| "hostname":"dev-dsk-shivabo-2b-3c0a1bd6.us-west-2.amazon.com",
| "event_type":"MerchantRegistrationFraudEvaluation",
| "event_date":"1513665186657"
| }
|}""".stripMargin
val eventType = JsonPath.read[String](jsonString, "$.message_metadata.event_type")
println(eventType) // MerchantRegistrationFraudEvaluation
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.