yaml vs json
8658 단어 scala
우 리 는 Yml 가 json 의 초 집합 이라는 것 을 알 고 있 습 니 다.Yml 와 json 에 대한 소 개 는 위 키 Yml 와 위 키 제 이 슨 을 볼 수 있 습 니 다.
yaml scala
Yml scala 언어 가 잘 사용 되 지 않 는 wrapper,최종 적 으로 사용 하 는 자바 가 제공 하 는 snakeyaml
정의.
yml 형식의 파일 을 scala 대상 으로 바 꿀 때 자바 빈 의 규범 에 부합 해 야 하기 때문에 scala 의 대상 은 추 하 게 정의 되 었 습 니 다.마지막 으로 이 렇 습 니 다.
package com.ximalaya.sparkcommon.model
import scala.beans.BeanProperty
/**
* Created by todd.chen on 6/4/16.
* email : todd.chen@ximalaya.com
*/
class EmailConfigYaml {
@BeanProperty var host: String = _
@BeanProperty var username: String = _
@BeanProperty var password: String = _
@BeanProperty var auth: Boolean = _
@BeanProperty var fromEmail: String = _
override def toString = s"EmailConfig($host,$username,$password,$auth,$fromEmail)"
}
읽 기와 쓰기:
def getEmailConfigYaml = {
val source =
"""
|--- !!com.ximalaya.sparkcommon.model.EmailConfigYaml
|host : smtp.sina.cn
|username : cjuexuan
|password : password
|auth : true
|fromEmail: [email protected]
|
""".stripMargin
val yml = new Yaml()
val email = yml.load(source).asInstanceOf[EmailConfigYaml]
println(s"yaml2email:$email")
val emailString = yml.dump(email)
println(s"email2yaml:$emailString")
}
json scala
현재 제 이 슨 이 가장 좋아 하 는 라 이브 러 리 는 scala 에서 play-jso 정의 와 읽 기와 쓰기 도 상당히 간단 합 니 다.간단하게 넘 어가 보 겠 습 니 다.
정의.
package com.ximalaya.sparkcommon.model
import play.api.libs.json.Json
/**
* Created by todd.chen on 6/4/16.
* email : todd.chen@ximalaya.com
*/
case class EmailConfigJson(
host:String,
username:String,
password:String,
auth:String,
fromEmail:String
)
object EmailConfigJson{
val format = Json.format[EmailConfigJson]
}
읽 기와 쓰기
def getEmailConfigJson = {
val source =
"""
|{
| "host" : "smtp.sina.cn",
| "username" : "cjuexuan",
| "password" : "password",
| "auth" : "true",
| "fromEmail" : "[email protected]"
|}
""".stripMargin
val json = Json.parse(source)
implicit val format = EmailConfigJson.format
val email = json.as[EmailConfigJson]
println(s"json2email:$email")
val emailString = Json.toJson(email)
println(s"email2json:$emailString")
}
읽 기 쓰기 테스트 용례
def test(func: ⇒ Unit) = {
val start = Instant.now()
func
val end = Instant.now()
val duration = Duration.between(start, end)
println(s"duration time :${duration.toNanos}}")
}
def main(args: Array[String]): Unit = {
test(getEmailConfigYaml)
test(getEmailConfigJson)
}
결과 와 결론
json2email:EmailConfigJson(smtp.sina.cn,cjuexuan,password,true,cjuexuan@sina.com)
email2json:{"host":"smtp.sina.cn","username":"cjuexuan","password":"password","auth":"true","fromEmail":"[email protected]"}
duration time :1586000000}
yaml2email:EmailConfig(smtp.sina.cn,cjuexuan,password,true,cjuexuan@sina.cn)
email2yaml:!!com.ximalaya.sparkcommon.model.EmailConfigYaml {auth: true, fromEmail: cjuexuan@sina.cn,
host: smtp.sina.cn, password: password, username: cjuexuan}
duration time :253000000}
Process finished with exit code 0
순 서 를 바 꾸 어 테스트 하 다.
yaml2email:EmailConfig(smtp.sina.cn,cjuexuan,password,true,cjuexuan@sina.cn)
email2yaml:!!com.ximalaya.sparkcommon.model.EmailConfigYaml {auth: true, fromEmail: cjuexuan@sina.cn,
host: smtp.sina.cn, password: password, username: cjuexuan}
duration time :676000000}
json2email:EmailConfigJson(smtp.sina.cn,cjuexuan,password,true,cjuexuan@sina.com)
email2json:{"host":"smtp.sina.cn","username":"cjuexuan","password":"password","auth":"true","fromEmail":"[email protected]"}
duration time :994000000}
Process finished with exit code 0
어떤 방식 으로 든 Yml 의 해석 은 json 보다 빠 르 지만 bean 대상 을 사용 할 때 Yml 의 정 의 는 json 보다 복잡 하기 때문에 뚜렷 한 성능 문제 가 없 을 때 저 는 json 을 선 호 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JDK 11을 사용하여 NixOS에서 Play Framework 실행저는 NixOS로 전환하고 있으며 이에 대해 다소 기대하고 있습니다. 오늘 저는 sbt 설치 및 JDK 11로 다운그레이드를 포함하여 Play Framework 환경을 손쉽게 설치하고 실행할 수 있게 된 것을 축하합...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.