2016-07-14 55 views
0

在我的XSD文件我的預約類型提供不同的日期格式:jsonix:轉換json-> XML:日期格式忽略

<xs:complexType name="appointment"> 
    <xs:choice> 
    <xs:element name="jahr.Monat.Tag.Zeit" minOccurs="0" type="xs:dateTime"/> 
    <xs:element name="jahr.Monat.Tag" minOccurs="0" type="xs:date"/> 
    <xs:element name="jahr.Monat" minOccurs="0" type="xs:gYearMonth"/> 
    <xs:element name="jahr" minOccurs="0" type="xs:gYear"/> 
    </xs:choice> 
</xs:complexType> 

此JSON對象:

{ 
    "AppointmentElementOfTypeappintment": 
     { 
      "jahr.Monat.Tag": "2002-09-24" 
      } 
} 

在結束空元素:

<AppointmentElementOfTypeappintment/> 

只有當我選擇gYear的我得到一個充滿元素的xml:

{ 
    "AppointmentElementOfTypeappintment": 
     { 
      "jahr": "2002" 
      } 
} 

結果:

<AppointmentElementOfTypeappintment><jahr>2002</jahr></AppointmentElementOfTypeappintment> 

我映射對象是如下:

..., 
{ 
    localName: 'appointment', 
    propertyInfos: [{ 
     name: 'jahrMonatTagZeit', 
     elementName: 'jahr.Monat.Tag.Zeit', 
     typeInfo: 'DateTime' 
     }, { 
     name: 'jahrMonatTag', 
     elementName: 'jahr.Monat.Tag', 
     typeInfo: 'Date' 
     }, { 
     name: 'jahrMonat', 
     elementName: 'jahr.Monat', 
     typeInfo: 'GYearMonth' 
     }, { 
     name: 'jahr', 
     typeInfo: 'GYear' 
     }] 
    }, .... 

回答

0

你映射說name:'jahrMonatTag',所以嘗試:

{ 
    "AppointmentElementOfTypeappintment": 
    { 
     "jahrMonatTag": "2002-09-24" 
    } 
} 

更新

我明白這一點。然而,我傳遞給編組的json數據來自外部模塊,即我對字段名稱沒有影響。我在模塊中做的是將這些jsons轉換爲xml。顯然,他們使用的圖書館收集來自數據庫的數據,jsons使用虛線形式表示字段,即'jahr.Monat.Tag'

然後,你必須改變映射屬性名稱:

{ 
     name: 'jahr.Monat.Tag', 
     elementName: 'jahr.Monat.Tag', 
     typeInfo: 'Date' 
} 

如果你手工編寫你的映射,這是很容易做到。

如果您第一次編寫XML模式並將其編譯到映射中,那麼此刻您將獲得Java風格的屬性名稱(jahrMonatTagjahr.Monat.Tag)。 Jsonix Schema Compiler目前不會生成「原始」屬性名稱,但這是一個可實現的功能。請file an issue

免責聲明:我是Jsonix的作者。

+0

我明白這一點。然而,我傳遞給編組的json數據來自外部模塊,即我對字段名稱沒有影響。我在模塊中做的是將這些jsons轉換爲xml。顯然,他們使用的圖書館收集來自數據庫的數據產生的jsons使用字段的虛線形式,即'jahr.Monat.Tag'。 – saab

+0

@saab請參閱更新。 – lexicore

+0

我對所有的東西都很新(gthub etcc)。我該如何拉(使用)你的更新? – saab