我是一名 Java 和 Js 開發人員,所以我對 rails 和 ruby?? 完全陌生。在我的一個專案中,我使用 rails 來使用 api 并回傳給 js。我正在將 api 回應轉換為 ruby?? 模型。
現在,它的格式為 {KEY1=>[{array of objects(my model)}], KEY2=>[{array of objects(my model)}]}
模型的關鍵也在snake_case。我的要求是遍歷這個并將其轉換為帶有駝峰式大小寫鍵的 JSON。
轉換為模型后的 API 回應: { KEY1=>[{@person_name:"abc", @person_id="123"}],KEY2:[{@personName:"bca", @person_id="231"}] }
期望的輸出: { KEY1:[{personName:"abc", personId:"123"}],KEY2:[{personName:"bca",personId:"231"}] }
到目前為止,我嘗試使用 .map 和 .transform_values,但不知道我哪里做錯了。
任何幫助表示贊賞。
uj5u.com熱心網友回復:
您可以將以下內容添加到您的ApplicationRecord課程中:
class ApplicationRecord < ActiveRecord::Base
def serializable_hash(options = {})
hash = super
return hash unless options[:camelize]
hash.deep_transform_keys { |key| key.to_s.camelize(options[:camelize]) }
end
end
這將允許您呼叫to_json(camelize: :lower)幾乎任何物件:
{
KEY1: Person.where(...),
KEY2: Person.where(...),
}.to_json(camelize: :lower)
自動序列化整個集合
uj5u.com熱心網友回復:
你可以這樣做:
{
KEY1: Person.where(...).select(:name, :id).map { |p| Hash[p.serializable_hash.map { |key, value| ["#{p.model_name.name.downcase}#{key.capitalize}", value] }] },
KEY2: Person.where(...).select(:name, :id).map { |p| Hash[p.serializable_hash.map { |key, value| ["#{p.model_name.name.downcase}#{key.capitalize}", value] }] }
}.to_json
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/321207.html
上一篇:為什么呼叫pppp不回圈?
