ReadJSONNumber reads an integer or a float value and return as json.Number
()
| 1478 | |
| 1479 | // ReadJSONNumber reads an integer or a float value and return as json.Number |
| 1480 | func (m *Reader) ReadJSONNumber() (n json.Number, err error) { |
| 1481 | t, err := m.NextType() |
| 1482 | if err != nil { |
| 1483 | return |
| 1484 | } |
| 1485 | switch t { |
| 1486 | case IntType: |
| 1487 | v, err := m.ReadInt64() |
| 1488 | if err == nil { |
| 1489 | return json.Number(strconv.FormatInt(v, 10)), nil |
| 1490 | } |
| 1491 | return "", err |
| 1492 | case UintType: |
| 1493 | v, err := m.ReadUint64() |
| 1494 | if err == nil { |
| 1495 | return json.Number(strconv.FormatUint(v, 10)), nil |
| 1496 | } |
| 1497 | return "", err |
| 1498 | case Float32Type, Float64Type: |
| 1499 | v, err := m.ReadFloat64() |
| 1500 | if err == nil { |
| 1501 | return json.Number(strconv.FormatFloat(v, 'f', -1, 64)), nil |
| 1502 | } |
| 1503 | return "", err |
| 1504 | } |
| 1505 | return "", TypeError{Method: NumberType, Encoded: t} |
| 1506 | } |
| 1507 | |
| 1508 | // ReadIntf reads out the next object as a raw interface{}/any. |
| 1509 | // Arrays are decoded as []interface{}, and maps are decoded |