英文:
Golang Json Unmarshal string/int64 into int64
问题
我遇到了一个Json解组的情况
import (
json "project/pkg/utils/json"
)
type Item struct {
Id int64 `json:"id"`
Price int64 `json:"price"`
}
func HandleJsonData() {
jsonData := []byte(`[{"id":"1000","price":"30"},{"id":"1001","price":50}]`)
var item []Item
err := json.Unmarshal(jsonData, &item)
if err != nil {
fmt.Println(err)
}
}
我无法正确地解组json数据。如何解决这个问题?
英文:
I had meet A Json Unmarshal Situation
import (
json "project/pkg/utils/json"
)
type Item struct {
Id int64 `json:"id"`
Price int64 `json:"price"`
}
func HandleJsonData() {
jsonData := []byte(`[{"id":"1000,"price":"30"},{"id":"1001,"price":50}]`)
var item []Item
err = json.Unmarshal(jsonData, &item)
if err != nil {
fmt.Println(err)
}
}
I cannot direct urmarshal jsondata correctly.
How to solve this situation
答案1
得分: 1
type Item struct {
Price json.Number `json:"price"`
Id int64 `json:"id"`
}
func HandleJsonData() {
jsonData := []byte(`[{"id":"1000","price":"30"},{"id":"1001","price":50}]`)
var item Item
err = json.Unmarshal(jsonData, &item)
if err != nil {
fmt.Println(err)
}
price, _ := strconv.ParseInt(string(item.Price), 10, 64)
}
英文:
type Item struct {
Price json.Number `json:"price"`
Id int64 `json:"id"`
}
func HandleJsonData() {
jsonData := []byte(`[{"id":"1000,"price":"30"},{"id":"1001,"price":50}]`)
var item Item
err = json.Unmarshal(jsonData, &item)
if err != nil {
fmt.Println(err)
}
price, _ := strconv.ParseInt(string(item.Price), 10, 64)
}
答案2
得分: -1
以下是你提供的代码的翻译:
type Item struct {
Price int64 `json:"price"`
Id int64 `json:"id"`
}
func TestHandleJsonData(t *testing.T) {
jsonData := []byte(`[{"id":1000,"price":30},{"id":1001,"price":50}]`)
var item []Item
err := json.Unmarshal(jsonData, &item)
require.NoError(t, err)
require.NotEmpty(t, item)
require.Len(t, item, 2)
require.Equal(t, int64(1000), item[0].Id)
require.Equal(t, int64(30), item[0].Price)
require.Equal(t, int64(1001), item[1].Id)
require.Equal(t, int64(50), item[1].Price)
}
希望对你有帮助!如果你有任何其他问题,请随时提问。
英文:
everything works as it should, just fix the errors in the line you are parsing (look in my code)
type Item struct {
Price int64 `json:"price"`
Id int64 `json:"id"`
}
func TestHandleJsonData(t *testing.T) {
jsonData := []byte(`[{"id":1000,"price":30},{"id":1001,"price":50}]`)
var item []Item
err := json.Unmarshal(jsonData, &item)
require.NoError(t, err)
require.NotEmpty(t, item)
require.Len(t, item, 2)
require.Equal(t, int64(1000), item[0].Id)
require.Equal(t, int64(30), item[0].Price)
require.Equal(t, int64(1001), item[1].Id)
require.Equal(t, int64(50), item[1].Price)
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论