使用argonaut,我可以生成一些JSON:
def toJson(user:User) = ("id" := user.id) ->: ("name" := user.name) ->: jEmptyObject
但它会生成逆序的json:
{
"name": "myname",
"id": "123"
}
其实我希望它是:
{
"id": "123",
"name": "myname"
}
有没有办法做到这一点?我不想把它写成:
("name" := user.name) ->: ("id" := user.id) ->: jEmptyObject
我想找到一种以相同顺序编写它们的方法
答案 0 :(得分:0)
首先在Encoder中以该顺序定义字段为 -
implicit def EncodeUserJson: EncodeJson[User] = EncodeJson[User]((p: User) ⇒
("id" := p.id) ->:
("name" := p.name) ->: jEmptyObject)
接下来使用nospace但保留顺序 -
val t = PrettyParams.nospace.copy(preserveOrder =
true).pretty(user.asJson)
当你打印t(字符串化的用户)时,你会看到订单。