如何可靠地解析 PostgreSQL 货币(在 Python 中)
How to robustly parse PostgreSQL money (in Python)
如何可靠地解析 PostgreSQL 提供的 money
类型,以提取值和货币符号? (在 Python 中,但也欢迎一些非特定语言的内容)
我认为的问题是各种组件可以改变。例如,货币符号可能会有所不同,因为它的位置,以及我称之为小数点的符号,甚至可能是负号...
上下文:我正在为 Python 编写 PostgreSQL 适配器,想知道是解析 money
输出,还是将其保留为字符串。
这里列出了所有(?)148 种可能的方式 12345.67 和 -12345.67 可以根据 lc_monetary
设置在我的系统上格式化。 (还有更多 lc_monetary
的可能性,但我已经删除了会重复此列表中输出的值)
lc_monetary
12345.67
-12345.67
aa_DJ.iso88591
345.67
- 345.67
aa_ER.utf8
$ 12,346
-$ 12,346
aa_ET.utf8
,345.67
-,345.67
af_ZA.iso88591
R12,345.67
-R12,345.67
an_ES.iso885915
12.345,67 €
-12.345,67 €
ar_AE.iso88596
د.إ. 12,345.670
د.إ. 12,345.670-
ar_BH.iso88596
د.ب. 12,345.670
د.ب. 12,345.670-
ar_DZ.iso88596
د.ج. 12,345.670
د.ج. 12,345.670-
ar_EG.iso88596
ج.م. 12,345.670
ج.م. 12,345.670-
ar_IN.utf8
₹ 12,345.67
-₹ 12,345.67
ar_IQ.iso88596
د.ع. 12,345.670
د.ع. 12,345.670-
ar_JO.iso88596
د.أ. 12,345.670
د.أ. 12,345.670-
ar_KW.iso88596
د.ك. 12,345.670
د.ك. 12,345.670-
ar_LB.iso88596
ل.ل. 12,345.670
ل.ل. 12,345.670-
ar_LY.iso88596
د.ل. 12,345.670
د.ل. 12,345.670-
ar_MA.iso88596
د.م. 12,345.670
د.م. 12,345.670-
ar_OM.iso88596
ر.ع. 12,345.670
ر.ع. 12,345.670-
ar_QA.iso88596
ر.ق. 12,345.670
ر.ق. 12,345.670-
ar_SA.iso88596
12,345.67 ريال
-12,345.67 ريال
ar_SD.iso88596
ج.س. 12,345.670
ج.س. 12,345.670-
ar_SY.iso88596
ل.س. 12,345.670
ل.س. 12,345.670-
ar_TN.iso88596
د.ت. 12,345.670
د.ت. 12,345.670-
ar_YE.iso88596
ر.ي. 12,345.670
ر.ي. 12,345.670-
ayc_PE.utf8
S/ 12,345.67
-S/ 12,345.67
az_AZ.utf8
12 345.67 man.
-12 345.67 man.
be_BY.cp1251
12 345.67 руб
-12 345.67 руб
be_BY.utf8@latin
12 345.67 Rub
-12 345.67 Rub
bem_ZM.utf8
K12,345.67
-K12,345.67
ber_MA.utf8
ⴷ.ⵎ. 12,345.670
ⴷ.ⵎ. 12,345.670-
bg_BG.cp1251
12 345,67 лв
-12 345,67 лв
bn_BD.utf8
৳ 12,345.67
-৳ 12,345.67
bn_IN.utf8
₹ 1,23,45.67
-₹ 1,23,45.67
bo_CN.utf8
¥12,345.67
¥-12,345.67
br_FR.iso88591
12 345,67 EUR
-12 345,67 EUR
br_FR.iso885915@euro
12 345,67 €
-12 345,67 €
bs_BA.iso88592
KM 12 345,67
-KM 12 345,67
ca_AD.iso885915
€ 12.345,67
-€ 12.345,67
ca_ES.iso88591
EUR 12.345,67
-EUR 12.345,67
crh_UA.utf8
12 345.67 gr
-12 345.67 gr
cs_CZ.iso88592
12 345,67 Kč
-12 345,67 Kč
csb_PL.utf8
12.345,67 zł
-12.345,67 zł
cv_RU.utf8
12 345.67 t
-12 345.67 t
cy_GB.iso885914
£12,345.67
-£12,345.67
da_DK.iso88591
kr 12.345,67
kr -12.345,67
de_AT.iso88591
EUR 12 345,67
-EUR 12 345,67
de_AT.iso885915@euro
€ 12 345,67
-€ 12 345,67
de_BE.iso88591
EUR 12.345,67
EUR- 12.345,67
de_BE.iso885915@euro
€ 12.345,67
€- 12.345,67
de_CH.iso88591
Fr. 12'345.67
Fr.- 12'345.67
de_DE.iso88591
12.345,67 EUR
-12.345,67 EUR
dv_MV.utf8
ރ. 12,345.67
-ރ.12,345.67
dz_BT.utf8
དངུལ་ཀྲམ་ 12,345.670
དངུལ་ཀྲམ་- 12,345.670
el_CY.iso88597
12.345,67€
-€12.345,67
en_BW.iso88591
Pu12,345.67
-Pu12,345.67
en_DK.iso88591
¤12.345,67
-¤12.345,67
en_HK.iso88591
HK,345.67
(HK,345.67)
en_IE.iso88591
EUR12,345.67
-EUR12,345.67
en_IE.iso885915@euro
€12,345.67
-€12,345.67
en_NG.utf8
₦12,345.67
-₦12,345.67
en_PH.iso88591
Php12,345.67
(Php12,345.67)
en_SG.iso88591
,345.67
(,345.67)
en_ZW.iso88591
Z,345.67
-Z,345.67
es_AR.iso88591
$ 12.345,67
-$ 12.345,67
es_BO.iso88591
$b 12.345,67
-$b 12.345,67
es_CR.iso88591
C= 12 345,67
-C= 12 345,67
es_CR.utf8
₡ 12 345,67
-₡ 12 345,67
es_CU.utf8
12 345,67 $
-12 345,67 $
es_DO.iso88591
$ 12,345.67
-$ 12,345.67
es_GT.iso88591
Q 12,345.67
-Q 12,345.67
es_HN.iso88591
L. 12,345.67
-L. 12,345.67
es_NI.iso88591
C$ 12,345.67
-C$ 12,345.67
es_PA.iso88591
B/ 12,345.67
-B/ 12,345.67
es_PY.iso88591
Gs. 12.345,67
-Gs. 12.345,67
es_SV.iso88591
C= 12,345.67
-C= 12,345.67
es_SV.utf8
₡ 12,345.67
-₡ 12,345.67
es_VE.iso88591
Bs. 12.345,67
-Bs. 12.345,67
et_EE.iso88591
EUR 12 345,67
-EUR 12 345,67
et_EE.iso885915
€ 12 345,67
-€ 12 345,67
eu_ES.iso885915@euro
€ 12.346
-€ 12.346
fa_IR.utf8
12٬346 ریال
-12٬346 ریال
ff_SN.utf8
12,345.67 CFA
-12,345.67 CFA
fi_FI.iso88591
12 345,67 EUR
-12 345,67 EUR
fi_FI.iso885915@euro
12 345,67 €
-12 345,67 €
fil_PH.utf8
PhP12,345.67
-PhP 12,345.67
fr_CA.iso88591
12 345,67 $
(12 345,67 $)
fy_NL.utf8
€ 12 345,67
€ 12 345,67-
gu_IN.utf8
+₹ 12,345.67
-₹ 12,345.67
he_IL.iso88598
שח 12,345.67
שח 12,345.67-
hr_HR.iso88592
Kn 12 345,67
-Kn 12 345,67
ht_HT.utf8
12 345,67 g
-12 345,67 g
hu_HU.iso88592
12.345,67 Ft
-12.345,67 Ft
hy_AM.utf8
Դ12,345.67
-Դ12,345.67
id_ID.iso88591
Rp12.345,67
-Rp12.345,67
is_IS.iso88591
12.346 kr
-12.346 kr
ja_JP.eucjp
¥12,346
¥-12,346
ka_GE.utf8
ლ12.345,67
-ლ12.345,67
kk_KZ.utf8
12 345.67 тг
-12 345.67 тг
km_KH.utf8
12,345.67៛
-12,345.67៛
ko_KR.euckr
₩12,346
₩-12,346
ku_TR.iso88599
12.345,67 TL
-12.345,67 TL
ky_KG.utf8
12 345.67 сом
-12 345.67 сом
lg_UG.iso885910
12,345.67/-
-12,345.67/-
lo_LA.utf8
₭ 12,345.67
₭ -12,345.67
lt_LT.iso885913
12.345,67 Lt
-12.345,67 Lt
lv_LV.iso885913
Ls 12 345,67
-Ls 12 345,67
mg_MG.iso885915
12 345,67 AR
-12 345,67 AR
mhr_RU.utf8
12 345.67 ТЕҤ
-12 345.67 ТЕҤ
mk_MK.iso88595
12 345,67 ден
-12 345,67 ден
mn_MN.utf8
12 345.67 ₮
-12 345.67 ₮
ms_MY.iso88591
RM12,345.67
(RM12,345.67)
mt_MT.iso88593
12,345.67EUR
(12,345.67EUR)
mt_MT.utf8
12,345.67€
(12,345.67€)
my_MM.utf8
12,345.67Ks
-12,345.67Ks
nan_TW.utf8@latin
NT,345.67
-NT,345.67
nb_NO.iso88591
kr12 345,67
kr-12 345,67
ne_NP.utf8
रू 12,345.67
-रू 12,345.67
nl_AW.utf8
Afl. 12 345,67
Afl. 12 345,67-
nl_BE.iso88591
EUR 12 345,67
EUR 12 345,67-
nn_NO.iso88591
kr 12 345,67
-kr12 345,67
om_KE.iso88591
Ksh12,345.67
-Ksh12,345.67
os_RU.utf8
12 345.67 сом
-12 345.67 сом
pa_PK.utf8
Rs 12,345.67
-Rs12,345.67
pap_AN.utf8
f 12 345,67
f 12 345,67-
ps_AF.utf8
12٬346 افغانۍ
-12٬346 افغانۍ
pt_BR.iso88591
R$ 12.345,67
-R$ 12.345,67
ro_RO.iso88592
Lei 12.345,67
-Lei 12.345,67
ru_RU.iso88595
12 345.67 руб
-12 345.67 руб
ru_UA.koi8u
12 345.67 гр
-12 345.67 гр
rw_RW.utf8
12.345,67 Frw
-12.345,67 Frw
sd_IN.utf8@devanagari
रु 12,345.67
-रु 12,345.67
se_NO.utf8
ru12.345,67
ru-12.345,67
si_LK.utf8
₨ 12,345.67
-₨ 12,345.67
sq_AL.iso88591
Lek12.345,670
-Lek12.345,670
sq_MK.utf8
12 345,67 den
-12 345,67 den
sr_RS.utf8
12.345,67 дин
-12.345,67 дин
sr_RS.utf8@latin
din 12.346
-din 12.346
sv_SE.iso88591
12 345,67 kr
-12 345,67 kr
sw_TZ.utf8
TSh12,345.67
-TSh12,345.67
te_IN.utf8
₹12,345.67
-₹12,345.67
th_TH.utf8
฿ 12,345.67
฿ -12,345.67
tk_TM.utf8
12,345.67 MANAT
-12,345.67 MANAT
tt_RU.utf8@iqtelif
12 345.67 sum
-12 345.67 sum
uk_UA.koi8u
12 345,67грн.
-12 345,67 грн.
uz_UZ.iso88591
so'm12,345.67
-so'm12,345.67
uz_UZ.utf8@cyrillic
сўм12,345.67
-сўм12,345.67
vi_VN.utf8
12.346₫
-₫12.346
wo_SN.utf8
12 345,67 CFA
-12 345,67 CFA
yi_US.cp1255
$ 12,345.67
$ 12,345.67-
根据大家的评论,我的回答是:
Don't
要么不使用该类型,要么最多使用它作为output-only,不被解析。
如何可靠地解析 PostgreSQL 提供的 money
类型,以提取值和货币符号? (在 Python 中,但也欢迎一些非特定语言的内容)
我认为的问题是各种组件可以改变。例如,货币符号可能会有所不同,因为它的位置,以及我称之为小数点的符号,甚至可能是负号...
上下文:我正在为 Python 编写 PostgreSQL 适配器,想知道是解析 money
输出,还是将其保留为字符串。
这里列出了所有(?)148 种可能的方式 12345.67 和 -12345.67 可以根据 lc_monetary
设置在我的系统上格式化。 (还有更多 lc_monetary
的可能性,但我已经删除了会重复此列表中输出的值)
lc_monetary | 12345.67 | -12345.67 |
---|---|---|
aa_DJ.iso88591 | 345.67 | - 345.67 |
aa_ER.utf8 | $ 12,346 | -$ 12,346 |
aa_ET.utf8 | ,345.67 | -,345.67 |
af_ZA.iso88591 | R12,345.67 | -R12,345.67 |
an_ES.iso885915 | 12.345,67 € | -12.345,67 € |
ar_AE.iso88596 | د.إ. 12,345.670 | د.إ. 12,345.670- |
ar_BH.iso88596 | د.ب. 12,345.670 | د.ب. 12,345.670- |
ar_DZ.iso88596 | د.ج. 12,345.670 | د.ج. 12,345.670- |
ar_EG.iso88596 | ج.م. 12,345.670 | ج.م. 12,345.670- |
ar_IN.utf8 | ₹ 12,345.67 | -₹ 12,345.67 |
ar_IQ.iso88596 | د.ع. 12,345.670 | د.ع. 12,345.670- |
ar_JO.iso88596 | د.أ. 12,345.670 | د.أ. 12,345.670- |
ar_KW.iso88596 | د.ك. 12,345.670 | د.ك. 12,345.670- |
ar_LB.iso88596 | ل.ل. 12,345.670 | ل.ل. 12,345.670- |
ar_LY.iso88596 | د.ل. 12,345.670 | د.ل. 12,345.670- |
ar_MA.iso88596 | د.م. 12,345.670 | د.م. 12,345.670- |
ar_OM.iso88596 | ر.ع. 12,345.670 | ر.ع. 12,345.670- |
ar_QA.iso88596 | ر.ق. 12,345.670 | ر.ق. 12,345.670- |
ar_SA.iso88596 | 12,345.67 ريال | -12,345.67 ريال |
ar_SD.iso88596 | ج.س. 12,345.670 | ج.س. 12,345.670- |
ar_SY.iso88596 | ل.س. 12,345.670 | ل.س. 12,345.670- |
ar_TN.iso88596 | د.ت. 12,345.670 | د.ت. 12,345.670- |
ar_YE.iso88596 | ر.ي. 12,345.670 | ر.ي. 12,345.670- |
ayc_PE.utf8 | S/ 12,345.67 | -S/ 12,345.67 |
az_AZ.utf8 | 12 345.67 man. | -12 345.67 man. |
be_BY.cp1251 | 12 345.67 руб | -12 345.67 руб |
be_BY.utf8@latin | 12 345.67 Rub | -12 345.67 Rub |
bem_ZM.utf8 | K12,345.67 | -K12,345.67 |
ber_MA.utf8 | ⴷ.ⵎ. 12,345.670 | ⴷ.ⵎ. 12,345.670- |
bg_BG.cp1251 | 12 345,67 лв | -12 345,67 лв |
bn_BD.utf8 | ৳ 12,345.67 | -৳ 12,345.67 |
bn_IN.utf8 | ₹ 1,23,45.67 | -₹ 1,23,45.67 |
bo_CN.utf8 | ¥12,345.67 | ¥-12,345.67 |
br_FR.iso88591 | 12 345,67 EUR | -12 345,67 EUR |
br_FR.iso885915@euro | 12 345,67 € | -12 345,67 € |
bs_BA.iso88592 | KM 12 345,67 | -KM 12 345,67 |
ca_AD.iso885915 | € 12.345,67 | -€ 12.345,67 |
ca_ES.iso88591 | EUR 12.345,67 | -EUR 12.345,67 |
crh_UA.utf8 | 12 345.67 gr | -12 345.67 gr |
cs_CZ.iso88592 | 12 345,67 Kč | -12 345,67 Kč |
csb_PL.utf8 | 12.345,67 zł | -12.345,67 zł |
cv_RU.utf8 | 12 345.67 t | -12 345.67 t |
cy_GB.iso885914 | £12,345.67 | -£12,345.67 |
da_DK.iso88591 | kr 12.345,67 | kr -12.345,67 |
de_AT.iso88591 | EUR 12 345,67 | -EUR 12 345,67 |
de_AT.iso885915@euro | € 12 345,67 | -€ 12 345,67 |
de_BE.iso88591 | EUR 12.345,67 | EUR- 12.345,67 |
de_BE.iso885915@euro | € 12.345,67 | €- 12.345,67 |
de_CH.iso88591 | Fr. 12'345.67 | Fr.- 12'345.67 |
de_DE.iso88591 | 12.345,67 EUR | -12.345,67 EUR |
dv_MV.utf8 | ރ. 12,345.67 | -ރ.12,345.67 |
dz_BT.utf8 | དངུལ་ཀྲམ་ 12,345.670 | དངུལ་ཀྲམ་- 12,345.670 |
el_CY.iso88597 | 12.345,67€ | -€12.345,67 |
en_BW.iso88591 | Pu12,345.67 | -Pu12,345.67 |
en_DK.iso88591 | ¤12.345,67 | -¤12.345,67 |
en_HK.iso88591 | HK,345.67 | (HK,345.67) |
en_IE.iso88591 | EUR12,345.67 | -EUR12,345.67 |
en_IE.iso885915@euro | €12,345.67 | -€12,345.67 |
en_NG.utf8 | ₦12,345.67 | -₦12,345.67 |
en_PH.iso88591 | Php12,345.67 | (Php12,345.67) |
en_SG.iso88591 | ,345.67 | (,345.67) |
en_ZW.iso88591 | Z,345.67 | -Z,345.67 |
es_AR.iso88591 | $ 12.345,67 | -$ 12.345,67 |
es_BO.iso88591 | $b 12.345,67 | -$b 12.345,67 |
es_CR.iso88591 | C= 12 345,67 | -C= 12 345,67 |
es_CR.utf8 | ₡ 12 345,67 | -₡ 12 345,67 |
es_CU.utf8 | 12 345,67 $ | -12 345,67 $ |
es_DO.iso88591 | $ 12,345.67 | -$ 12,345.67 |
es_GT.iso88591 | Q 12,345.67 | -Q 12,345.67 |
es_HN.iso88591 | L. 12,345.67 | -L. 12,345.67 |
es_NI.iso88591 | C$ 12,345.67 | -C$ 12,345.67 |
es_PA.iso88591 | B/ 12,345.67 | -B/ 12,345.67 |
es_PY.iso88591 | Gs. 12.345,67 | -Gs. 12.345,67 |
es_SV.iso88591 | C= 12,345.67 | -C= 12,345.67 |
es_SV.utf8 | ₡ 12,345.67 | -₡ 12,345.67 |
es_VE.iso88591 | Bs. 12.345,67 | -Bs. 12.345,67 |
et_EE.iso88591 | EUR 12 345,67 | -EUR 12 345,67 |
et_EE.iso885915 | € 12 345,67 | -€ 12 345,67 |
eu_ES.iso885915@euro | € 12.346 | -€ 12.346 |
fa_IR.utf8 | 12٬346 ریال | -12٬346 ریال |
ff_SN.utf8 | 12,345.67 CFA | -12,345.67 CFA |
fi_FI.iso88591 | 12 345,67 EUR | -12 345,67 EUR |
fi_FI.iso885915@euro | 12 345,67 € | -12 345,67 € |
fil_PH.utf8 | PhP12,345.67 | -PhP 12,345.67 |
fr_CA.iso88591 | 12 345,67 $ | (12 345,67 $) |
fy_NL.utf8 | € 12 345,67 | € 12 345,67- |
gu_IN.utf8 | +₹ 12,345.67 | -₹ 12,345.67 |
he_IL.iso88598 | שח 12,345.67 | שח 12,345.67- |
hr_HR.iso88592 | Kn 12 345,67 | -Kn 12 345,67 |
ht_HT.utf8 | 12 345,67 g | -12 345,67 g |
hu_HU.iso88592 | 12.345,67 Ft | -12.345,67 Ft |
hy_AM.utf8 | Դ12,345.67 | -Դ12,345.67 |
id_ID.iso88591 | Rp12.345,67 | -Rp12.345,67 |
is_IS.iso88591 | 12.346 kr | -12.346 kr |
ja_JP.eucjp | ¥12,346 | ¥-12,346 |
ka_GE.utf8 | ლ12.345,67 | -ლ12.345,67 |
kk_KZ.utf8 | 12 345.67 тг | -12 345.67 тг |
km_KH.utf8 | 12,345.67៛ | -12,345.67៛ |
ko_KR.euckr | ₩12,346 | ₩-12,346 |
ku_TR.iso88599 | 12.345,67 TL | -12.345,67 TL |
ky_KG.utf8 | 12 345.67 сом | -12 345.67 сом |
lg_UG.iso885910 | 12,345.67/- | -12,345.67/- |
lo_LA.utf8 | ₭ 12,345.67 | ₭ -12,345.67 |
lt_LT.iso885913 | 12.345,67 Lt | -12.345,67 Lt |
lv_LV.iso885913 | Ls 12 345,67 | -Ls 12 345,67 |
mg_MG.iso885915 | 12 345,67 AR | -12 345,67 AR |
mhr_RU.utf8 | 12 345.67 ТЕҤ | -12 345.67 ТЕҤ |
mk_MK.iso88595 | 12 345,67 ден | -12 345,67 ден |
mn_MN.utf8 | 12 345.67 ₮ | -12 345.67 ₮ |
ms_MY.iso88591 | RM12,345.67 | (RM12,345.67) |
mt_MT.iso88593 | 12,345.67EUR | (12,345.67EUR) |
mt_MT.utf8 | 12,345.67€ | (12,345.67€) |
my_MM.utf8 | 12,345.67Ks | -12,345.67Ks |
nan_TW.utf8@latin | NT,345.67 | -NT,345.67 |
nb_NO.iso88591 | kr12 345,67 | kr-12 345,67 |
ne_NP.utf8 | रू 12,345.67 | -रू 12,345.67 |
nl_AW.utf8 | Afl. 12 345,67 | Afl. 12 345,67- |
nl_BE.iso88591 | EUR 12 345,67 | EUR 12 345,67- |
nn_NO.iso88591 | kr 12 345,67 | -kr12 345,67 |
om_KE.iso88591 | Ksh12,345.67 | -Ksh12,345.67 |
os_RU.utf8 | 12 345.67 сом | -12 345.67 сом |
pa_PK.utf8 | Rs 12,345.67 | -Rs12,345.67 |
pap_AN.utf8 | f 12 345,67 | f 12 345,67- |
ps_AF.utf8 | 12٬346 افغانۍ | -12٬346 افغانۍ |
pt_BR.iso88591 | R$ 12.345,67 | -R$ 12.345,67 |
ro_RO.iso88592 | Lei 12.345,67 | -Lei 12.345,67 |
ru_RU.iso88595 | 12 345.67 руб | -12 345.67 руб |
ru_UA.koi8u | 12 345.67 гр | -12 345.67 гр |
rw_RW.utf8 | 12.345,67 Frw | -12.345,67 Frw |
sd_IN.utf8@devanagari | रु 12,345.67 | -रु 12,345.67 |
se_NO.utf8 | ru12.345,67 | ru-12.345,67 |
si_LK.utf8 | ₨ 12,345.67 | -₨ 12,345.67 |
sq_AL.iso88591 | Lek12.345,670 | -Lek12.345,670 |
sq_MK.utf8 | 12 345,67 den | -12 345,67 den |
sr_RS.utf8 | 12.345,67 дин | -12.345,67 дин |
sr_RS.utf8@latin | din 12.346 | -din 12.346 |
sv_SE.iso88591 | 12 345,67 kr | -12 345,67 kr |
sw_TZ.utf8 | TSh12,345.67 | -TSh12,345.67 |
te_IN.utf8 | ₹12,345.67 | -₹12,345.67 |
th_TH.utf8 | ฿ 12,345.67 | ฿ -12,345.67 |
tk_TM.utf8 | 12,345.67 MANAT | -12,345.67 MANAT |
tt_RU.utf8@iqtelif | 12 345.67 sum | -12 345.67 sum |
uk_UA.koi8u | 12 345,67грн. | -12 345,67 грн. |
uz_UZ.iso88591 | so'm12,345.67 | -so'm12,345.67 |
uz_UZ.utf8@cyrillic | сўм12,345.67 | -сўм12,345.67 |
vi_VN.utf8 | 12.346₫ | -₫12.346 |
wo_SN.utf8 | 12 345,67 CFA | -12 345,67 CFA |
yi_US.cp1255 | $ 12,345.67 | $ 12,345.67- |
根据大家的评论,我的回答是:
Don't
要么不使用该类型,要么最多使用它作为output-only,不被解析。