{
"people": [
{
"name": "Jack",
"age": 15
},
{
"name": "Tony",
"age": 23
},
{
"name": "Mike",
"age": 19
}
]
}
Run Code Online (Sandbox Code Playgroud)
这是我试图解析的json样本.我希望能够对每个人进行foreach操作并打印出他们的姓名和年龄.
我知道如何在单个项目或特定编号项目时处理json数组.我不知道如何遍历所有项目.
谁能帮我吗?
如果我有"纽约市"这个短语,我如何得到每个单词的第一个字母?我的谷歌搜索只向我展示了如何将每个单词中的第一个字母大写,这看起来与我正在尝试的不同.
鉴于我对Scala的了解有限,我可能会在程序上做到这一点,但我希望有人能够对我提供一些Scala知识,并向我展示一个描述这个问题的功能方法的例子.
我试图通过远程http响应解析播放框架中的一些json.我想进入结果[0] - >位置[0] - > latLng-> lat.我正在使用scala的playframework 2.0.
下面是我使用的代码,以及我迄今为止尝试过的几个注释示例.
val promise = WS.url("http://www.mapquestapi.com/geocoding/v2/address?...").get()
val body = promise.value.get.body
val json = Json.parse(body)
val maybeLat = (json \ "results" \ "0" \ "locations" \ "0" \ "latLng" \ "lat").asInstanceOf[String]
//val maybeLat = (json \ "results[0]" \ "locations[0]" \ "latLng" \ "lat").asInstanceOf[String]
//val maybeLat = (json \ "results(0) \ "locations(0) \ "latLng" \ "lat").asInstanceOf[String]
Ok(body).withHeaders(CONTENT_TYPE -> "text/json")
Run Code Online (Sandbox Code Playgroud)
我从play框架获得的错误:http://pastebin.com/S5S3nY5D JSON我正在尝试解析:http://pastebin.com/7rfD0j2n
有问题的JSON:
{
"search_id": "",
"type": "Search.filter",
"query": "bar,club",
"params": {
"search_id": "",
"user_id": "",
"client": "ios",
"lat": 40.73199375351,
"lon": -74.00080404533901,
"radius": 20
}
Run Code Online (Sandbox Code Playgroud)
}
检索数据的代码:
val json = Json.parse(new String(body))
println((json \ "search_id") + " | " + (json \ "query"))
println(json)
Run Code Online (Sandbox Code Playgroud)
只打印json JsValue按预期打印出整个JSON.打印出第一个项目会产生:""| "酒吧,俱乐部"
为什么要保持JSON格式的引号?这不是字符串的一部分,它基本上是说引号内的内容是一个字符串.我该如何解决?
我在三个字段上使用典型的多匹配查询:名称,城市,州.多匹配查询也使用Java函数分数脚本.有什么方法可以在得分脚本中知道哪些字段匹配我的多重匹配查询?如果没有,有没有办法从SearchResponse对象中解决这个问题?
我目前在Elasticsearch 1.2.1上,但如果有必要,我可以轻松升级.
为了重写PHP的similar_text算法,我尝试了一些不同的方法.所有这些都取得了一定的成功,但最终以失败告
第一次尝试:我尝试从PHP源代码重写它.C优雅地使用指针使得在Scala中看起来无法做出同样精确的实现并且干净利落.
第二次尝试:我尝试用java中的PHP Similar_text()上发布的Java函数重写它.不幸的是,这个函数在Java中不起作用所以永远不要把它移植到Scala上.
第三次(当前)尝试:我目前正在尝试将此JavaScript实现转换为Scala:http://phpjs.org/functions/similar_text/.我以前在JavaScript中使用它,它似乎正常运行.我在Scala中的翻译(下面)运行不正常.它可以让你在1或2个相似性索引中,但它通常不是它的PHP对应结果的100%.
def similartext(first:String,second:String) : Int = {
if (first == null || second == null) {
0
}
var pos1:Int = 0
var pos2:Int = 0
var max:Int = 0
var sum:Int = 0
var l:Int = 0
val firstLength:Int = first.length
val secondLength:Int = second.length
for (p <- 0 until firstLength) {
for (q <- 0 until secondLength) {
while(p+l < firstLength && q+l < secondLength && (first.charAt(p+l) == …Run Code Online (Sandbox Code Playgroud) 我正在使用play 2.1.1,我在迭代数组时遇到问题.我读的地方,你可以创建一个列表[对象]一读,但每次我尝试这样做,我得到一个错误"No unapply function found"的这行
implicit val userListReads: Reads[List[FBUser]] = Json.reads[List[FBUser]]". The issue is " = Json.reads[List[FBUser]]
我无法尝试其他什么.任何帮助将不胜感激.
def linkUsers() = Action { implicit request =>
val json = Json.parse("{\"data\": [{\"name\": \"Me Lazyan\",\"id\": \"1182\"},{\"name\": \"Chales Dselle\",\"id\": \"10115\"},{\"name\": \"Be My\",\"id\": \"10275\"},{\"name\": \"De Rwani\", \"id\": \"11189\"},{\"name\": \"Phoe Johon\", \"id\": \"11372\"}]}")
val peoples = json.validate[List[FBUser]].get
peoples.foreach(println)
Ok(json).withHeaders(CONTENT_TYPE -> "text/json")
}
case class FBUser(
name: String,
id: String
)
object FBUser {
/** Uses a Scala Macro to define the Reads function …Run Code Online (Sandbox Code Playgroud) json scala playframework playframework-2.0 playframework-json