【发布时间】:2017-09-28 22:43:06
【问题描述】:
我有以下 JSON:
{
"ordernumber":"216300001000",
"datecreated":"2016-11-08T14:23:06.631Z",
"shippingmethod":"Delivery",
...
"customer":{
"firstname":"Victoria",
"lastname":"Validator"
},
"products":[
{
"sku":"ABC1",
"price":"9.99"
},
...
]
}
使用相应的 Ruby 类,包括验证器:
class Task
include ActiveModel::Model
include ActiveModel::Serializers::JSON
validates ..., presence: true
...
end
class Product
include ActiveModel::Model
include ActiveModel::Serializers::JSON
validates ..., presence: true
...
end
class Customer
include ActiveModel::Model
include ActiveModel::Serializers::JSON
validates ..., presence: true
...
end
我想做的是将 JSON 序列化为 Ruby 类。问题是 Task 类得到了正确的初始化。但是像 Customer 和 Product 这样的嵌套类仍然是散列。 (一个任务有一个客户和多个产品)
例子:
json = %Q{{ "ordernumber":"216300001000", "datecreated":"2016-11-08T14:23:06.631Z", "shippingmethod":"Delivery", "customer":{ "firstname":"Victoria", "lastname":"Validator" }, "products":[ { "sku":"ABC1", "price":"9.99" } ] }}
task = Task.new()
task.from_json(json)
task.class
# => Task
task.products[0].class
# => Hash
如何使用 ActiveModel 执行此操作并验证嵌套的 JSON? (我没有使用 Rails)
【问题讨论】:
-
你打算使用nested attributes吗?
标签: json ruby activemodel