Мне нужно иметь возможность отобразить сложный вложенный json из результата API в мое собственное представление класса. Также необходимо иметь возможность редактировать данные и отправлять их обратно в API как json.
Пробовал поиск по этому вопросу ранее. Мог только найти, как сопоставить с OpenStruct
.
На других языках, таких как C#, я могу сделать что-то вроде этого:
public class SomeViewModel
{
public SomeViewModel(){
A = new AViewModel();
B = new BViewModel();
Cs = new List<C>();
}
public string D {get; set;}
}
Где A, B и C сложные типы (могут содержать другие свойства других типов классов, массивы типов классов и т. д. c). Затем я мог бы использовать несколько библиотек, чтобы отобразить запрос JSON на SomeViewModel
и получить доступ ко всем свойствам и методам. Нужно сделать то же самое в Ruby.
My JSON содержит много объектов и массив объектов. В некоторых ситуациях это объекты с массивами объектов (массивы объектов также могут содержать массивы объектов) и вложенные массивы (которые также могут содержать объекты и массивы объектов). Теперь я знаю, что могу использовать синтаксическую нотацию ha sh, но тогда мне придется отображать каждую пару kv индивидуально. Я уверен, что в Ruby?
есть более DRY -последовательность. Допустим, здесь есть фрагмент JSON (значительно уменьшенный, так как фактический JSON Слишком большой и может в любом случае я не могу использовать реальные данные):
"SomeViewModel": {
"Bank": {
"ID": 585263,
"BankName": "First Bank of CA",
"Drawer": null,
"LockDate": "2020-02-24T08:45:13.507",
"BankerPartyID": "9EE7AE0A-4001",
"BankNumber": 4090466,
"BusinessPolicyID": 21,
"VersionNumber": "b5e8f11d-38cc-4861-9701-78e61a8f47d9",
"RepositoryName": null,
"IsBankToConvert": false,
"CreatedBy": null,
"ServerRootPath": null,
"SubmissionNumber": null,
"ReasonId": null,
"BankNotes": [], # Blank but coul also be an array of objects
},
"BankRequest": {
"BankHolder": null,
"BankTeam": null,
"PrimaryBanker": null,
},
"Customers": [{
"Name": "Dave"
"Phone": "555-555-5555"
}, {
"Name": "Bob"
"Phone": "555-555-5555"
}
],
"CurrentBankContract": {
"BankHolder": {
"BankHolderID": 1303164,
"SubscribingBankers": [{
"ElementGUID": "hihrwigohw-923489709724-jkflnanf3",
"ContractBankID": 1257638,
}, {
"ElementGUID": "4545ojoj-923489709724-jkflnanf3",
"ContractBankID": 1257456,
}
],
"BankNew": false,
"BankID": 585263,
},
"BankerTeam": {
"ContractBankerTeamMemberID": 5432605,
"Type": 1,
"SubscribingBanker": {
"ElementGUID": "45363-gsgsfdr-34525",
"ContractBankComponentID": 1257638,
},
"BankID": 585263,
}
}
}
Мне нужно отобразить SomeViewModel
и все его содержимое. Теперь для атрибута типа BankNotes
, хотя он является атрибутом класса Bank
, он действительно является массивом типа BankNote
. Поэтому вместо класса с именем BankNotes у меня был бы класс с именем BankNote, и я хотел бы отобразить эту часть таким образом, чтобы BankNotes
мог быть массивом типа BankNote
и иметь доступ ко всем методам в классе BankNote
. В любом случае, чтобы сопоставить комплекс JSON с моим собственным Ruby классом?