如果预先知道架构,你如何迭代json?

时间:2015-06-10 00:43:41

标签: json scala playframework

我一直在阅读Play的文档here关于json解析,但这一切看起来都适合解析Json你提前知道结构(例如它很好地映射到现有模型) )。对我来说,这进一步反映在这样一个事实上:json模块的api或多或少是///,它们按名称查找结构。

虽然最终我尝试转换为模型,但这是一个公共API点,所以我希望在此过程中保持友好并收集任何错误。即,字段不正确。

在伪代码中,id喜欢能够执行以下操作:

allowed_values = ['name', 'age', 'job'] 
field_errors = []
for key, value in json: 
    if key not in allowed_values: 
        field_erros.append(key) 

我允许我返回unrecognized field "naem"之类的内容,我觉得我很方便。

这可以(很容易)在scala中完成

1 个答案:

答案 0 :(得分:1)

是的,这是可能的,虽然你必须写一些自定义代码,所以我不会真正考虑它"简单"。

Play将JSON解析为JsValue特征。您可以对该特征进行模式匹配,它有两个您感兴趣的子类型:JsObjectJsArray(还有更多子类型,check the docs for the rest

您的问题似乎是面向JSON对象而JsObject的{​​{1}}是underlying: Map[String, JsValue],您应该可以轻松地遍历密钥/条目。

一些伪Scala代码(未编译):

Map