我有一個有3個類的模型,A,Parent和Child。一個hasMany父母和Child延伸父母。Grails 2.4.4綁定JSON嵌套對象
我需要處理UI上的複雜邏輯以創建模型,並決定使用與我的域模型相同的結構發佈JSON對象。現在,我有一個A的實例,它有一些關聯的Child實例,即在客戶端的JavaScript對象中。當我POST的JavaScript對象,序列化爲一個JSON字符串,控制器收到它確定,然後我這樣做:def a = new A(request.JSON);
創建了一個實例,但hasMany關係具有Parent實例而不是Child實例,所以我失去了Child的所有屬性值。
如何告訴Grails創建Child的實例而不是Parent的實例?
UPDATE
由控制器接收的request.JSON結構看起來像這樣:
[
name: name,
group: none,
where: [
[
codeOperand: in_list,
archetypeId: openEHR-EHR-EVALUATION.problem_diagnosis.v1,
codeValues: [
aaa,
bbb
],
path: /data[at0001]/items[at0005]/value,
class: Child1,
terminologyIdValues: [
cie
],
rmTypeName: DV_CODED_TEXT,
terminologyIdOperand: eq
],
[
magnitudeValues: [
1,
22
],
archetypeId: openEHR-EHR-OBSERVATION.blood_pressure.v1,
path: /data[at0001]/events[at0006]/data[at0003]/items[at0004]/value,
unitsOperand: eq,
class: Child2,
magnitudeOperand: between,
rmTypeName: DV_QUANTITY,
unitsValues: [
mmHg
]
]
]
]
在這種情況下我有2類Child1和CHILD2從父繼承。
我已經將「class」屬性添加到對象中,因爲我讀到可能會解決問題,但沒有。當我打印與A實例關聯的對象時,我得到了正確數量的實例,但是所有類都是「Parent」,正如您所看到的,有些值是綁定的,但都是父類的所有屬性。
[
(archetypeId: openEHR-EHR-EVALUATION.problem_diagnosis.v1,
path: /data[at0001]/items[at0005]/value,
rmTypeName: DV_CODED_TEXT,
class: Parent),
(archetypeId: openEHR-EHR-OBSERVATION.blood_pressure.v1,
path: /data[at0001]/events[at0006]/data[at0003]/items[at0004]/value,
rmTypeName: DV_QUANTITY,
class: Parent)
]
請發佈您的控制器上的json – dsharew
@DegenSharew我已經添加了一些示例。 –
仍然很難看出實際的類層次結構,但嘗試將pakcagename.class用於json中類的值。例如。類:「com.apar.Child」 – dsharew