准备活动,安装 Ammonite。
brew install ammonite-repl
或者按照 Ammonite 官网的命令行一键安装。用 brew 需要科学上网请在前面加 ALL_PROXY=socks5://localhost:1080
。
抽奖代码很简单:
import $ivy.`com.lihaoyi::requests:0.1.4`
import $ivy.`org.json4s::json4s-jackson:3.5.2`
import org.json4s.jackson.JsonMethods.parse
import org.json4s._
import org.json4s.JsonDSL._
import scala.util.Random
// 一些常量
val url = "https://www.v2ex.com/api/replies/show.json?topic_id=493356"
val numberOfWinners = 6
// 从 V2EX 获取数据
val source = requests.get(url)
// 解析 JSON,获取所有参与抽奖的用户
implicit val formats = DefaultFormats
val json = parse(source.text)
case class Profile(username: String, github: String)
case class Member(member: Profile)
val members = json.extract[List[Member]].map(_.member.username).distinct
// 抽奖
Random.shuffle(members).take(numberOfWinners)
https://github.com/sadhen/12-technologies-in-2017/tree/master/05-json4s-in-15min
比较笨,每次用都会查看自己写的这篇小文章。
大家要抽取内容的时候,建议用case class
,不要用\\
、\
,反正我觉得后者看得我头疼,代码也不那么友好。
一次性的话,怎么顺手怎么用,搭配 Ammonite,还是贼爽贼爽的。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.