mae*_*ics 4 arrays json crystal-lang
假设我在Crystal lang中有一个简单的JSON映射对象,例如:
class Item
JSON.mapping(
id: UInt32,
name: String,
)
end
Run Code Online (Sandbox Code Playgroud)
我可以像这样轻松地解析JSON字符串中的单个对象:
foo = Item.from_json(%({"id":1,"name":"Foo"}))
puts "OK: foo=#{foo}"
# => OK: foo=Item(@id=1, @name="Foo")
Run Code Online (Sandbox Code Playgroud)
但是我如何从JSON字符串解析一个Items 数组呢?我尝试了一些方法但不确定如何继续,例如:
items_str = %([{"id":1,"name":"Foo"},{"id":2,"name":"Bar"}])
items : Array(Item) = JSON.parse(items_str)
# => Error in foo.cr:15: type must be Array(Item), not JSON::Any
Run Code Online (Sandbox Code Playgroud)
当然,我也希望能够用JSON拉解析器做到这一点,所以可能有一些映射技巧或类型提示我缺少.想法?
在此规范中找到它.所以,你可以使用Array(Item).from_json:
items = Array(Item).from_json %([{"id":1,"name":"Foo"},{"id":2,"name":"Bar"}])
items.first.id #=> 1
items.first.name #=> "Foo"
items.last.id #=> 2
items.last.name #=> "Bar"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
909 次 |
| 最近记录: |