第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Go 是否正確地將 float64 編組為 JSON?

Go 是否正確地將 float64 編組為 JSON?

Go
富國滬深 2021-06-30 18:14:54
使用 go1.1.2 Win64,我有一個(gè) Go 程序,它“編組”了一個(gè)包含 float64 的結(jié)構(gòu)。當(dāng) float64 的值不是整數(shù)時(shí),例如。1234.44,然后它被“編組”為浮點(diǎn)數(shù)(json.Marshal)。然而,當(dāng)它是一個(gè)整數(shù)時(shí),例如?!?234.00”它被編組為一個(gè)整數(shù)“1234”。當(dāng)我在另一端 (Dart) 收到它時(shí),Dart (30188) 將整數(shù)視為整數(shù)(在地圖中 - JSON.decode)。因此,當(dāng)浮點(diǎn)數(shù)(雙精度數(shù))數(shù)據(jù)的表示不包含小數(shù)點(diǎn)時(shí),Dart 程序?qū)⒅兄?,并且我嘗試將其從地圖中“提取”為雙精度數(shù)。這顯然可以通過多種不同的方式解決(例如,轉(zhuǎn)換為整數(shù),然后轉(zhuǎn)換回浮點(diǎn)數(shù)),但是我想知道是否有另一種(更好的)方法來處理這種情況。有沒有比將 float64 轉(zhuǎn)換為整數(shù)更好的方法來處理這個(gè)問題?
查看完整描述

2 回答

?
拉風(fēng)的咖菲貓

TA貢獻(xiàn)1995條經(jīng)驗(yàn) 獲得超2個(gè)贊

JSON 與 Javascript 一樣,在整數(shù)和數(shù)字之間沒有區(qū)別。


如果 Dart 的處理方式1234.00與 不同1234,那么它正在對(duì)JSON 規(guī)范不支持的值做出假設(shè)。


雖然 Go 確實(shí)正確地封送了float64,但解決 Dart 假設(shè)問題的一種方法是在您自己的類型上實(shí)現(xiàn)Marshaler 接口:


type Number float64


func (n Number) MarshalJSON() ([]byte, error) {

    // There are probably better ways to do it. It is just an example

    return []byte(fmt.Sprintf("%f", n)), nil

}

然后您可以在您將編組的結(jié)構(gòu)中使用您自己的Number類型,而不是float64。通過這種方式,您可以確保您的數(shù)字始終使用小數(shù)點(diǎn)進(jìn)行編組。


查看完整回答
反對(duì) 回復(fù) 2021-07-12
?
繁星淼淼

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超11個(gè)贊

以下似乎是(對(duì)我而言)解決方案。整數(shù)方法 toDouble() 也適用于“num”(反之亦然)。在我看來,在處理可能被 Dart 解釋為 double 或 int 的 json 和貨幣值時(shí),有必要使用“as num”,然后使用內(nèi)置方法 toDouble()。


示例(去):


type cuAcctRow struct {

         .....

    D_AcctBal    float64

         .....

}

    if baJsAcctDet, oOsError = json.Marshal(uAcctRow); oOsError != nil {

示例(飛鏢):


Map mAcctData = json.parse(sResponse);


double dAcctBal  = (mAcctData['D_AcctBal'] as num).toDouble();

我不知道為什么 Dart 不允許直接將整數(shù)賦值為 double,但我確信這是有充分理由的。


查看完整回答
反對(duì) 回復(fù) 2021-07-12
  • 2 回答
  • 0 關(guān)注
  • 328 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)