GoLang结构体无法转换为JSON。

huangapple go评论74阅读模式
英文:

GoLang Sruct to JSON not converting

问题

我正在尝试将我的结构体"Sim"转换为JSON,在填充数据后。

当我打印变量s时,它显示正确的信息,当我打印data时,它显示为空。

如何将结构体转换为JSON?

以下是简化的代码:

type Sim struct {
    yr, ag, av, db, wd, st []int
    withdrawal []string
}

func main() {
    // 创建模拟数据
    var s Sim
    
    // 填充数据
    s = simulate(15000, 60, 65, 90, 2015, 10.0, 140000.0, true, s)
    
    // 转换为JSON,用于在网络上传输
    data, err := json.Marshal(s)
    if err != nil {
        fmt.Println(err)
        return
    }
    
    // 数据是正确的
    fmt.Println(s)
    
    // 输出: {}
    fmt.Println(string(data))
}
英文:

I am trying to convert my struct "Sim" into JSON, after being filled with data.

When I print the var s, it shows correct information, when I print data, it shows blank.

How do I convert Struct to JSON?

Reduced Code Below:

type Sim struct {
	yr, ag, av, db, wd, st []int
	withdrawal []string
}

func main() {
	// Creating simulation
	var s Sim
	
	// Filling with data
	s = simulate(15000, 60, 65, 90, 2015, 10.0, 140000.0, true, s)
	
	// Converting to JSON, for transmission over web
	data, err := json.Marshal(s)
	if err != nil {
		fmt.Println(err)
		return
	}
	
	// Data is correct
	fmt.Println(s)
	
	// Prints: {}
	fmt.Println(string(data))
}

答案1

得分: 1

你好!以下是你要翻译的内容:

结构体中的字段以小写字母开头,因此它们不会被转换为JSON。将它们改为以大写字母开头。

package main

import "encoding/json"
import "fmt"

type Sim struct {
    Yr, Ag, Av, Db, Wd, St []int
    Withdrawal             []string
}

func main() {
    // 创建模拟数据
    var s Sim

    // 转换为JSON,用于在网络上传输
    data, err := json.Marshal(s)
    if err != nil {
        fmt.Println(err)
        return
    }

    // 数据是正确的
    fmt.Println(s)

    // 输出:{}
    fmt.Println(string(data))
}

Playground

GO中的JSON序列化

英文:

Fields in your structures starts with lower case so they are not marshalled to JSON. Make them start with upper case letter.

package main

import "encoding/json"
import "fmt"

type Sim struct {
	Yr, Ag, Av, Db, Wd, St []int
	Withdrawal             []string
}

func main() {
	// Creating simulation
	var s Sim

	// Converting to JSON, for transmission over web
	data, err := json.Marshal(s)
	if err != nil {
		fmt.Println(err)
		return
	}

	// Data is correct
	fmt.Println(s)

	// Prints: {}
	fmt.Println(string(data))
}

<kbd>Playground</kbd>

JSON serialization in GO

huangapple
  • 本文由 发表于 2015年11月25日 16:33:34
  • 转载请务必保留本文链接:https://go.coder-hub.com/33911712.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定