Julia 结构中的 JSON 别名如何与 Go 中的一样?
Posted
技术标签:
【中文标题】Julia 结构中的 JSON 别名如何与 Go 中的一样?【英文标题】:How does one alias JSON in a Julia struct like in Go? 【发布时间】:2021-09-26 04:48:34 【问题描述】:在 GoLang 中,可以使用 JSON 别名来进行序列化和序列化/反序列化:
type Response struct
TaskID string `json:"task_id"`
...
...
func Run(task structs.Task)
msg := structs.Response
msg.TaskID = task.TaskID
resp, _ := json.Marshal(msg)
...
json:"task_id"
是上面 GoLang 示例的 Response
结构中 string
类型的结构字段 TaskID
的别名。此别名可用于将结构数据序列化为 JSON,如 json.Marshal(msg)
中所示
如何在 Julia 中实现这一点?
【问题讨论】:
您能解释一下“别名”是什么意思吗? 我编辑了问题以进一步解释 json 别名。 【参考方案1】:你可以使用StructTypes.names函数:
using JSON3
using StructTypes
Base.@kwdef mutable struct Foo
task_id::Int = 0
bar::String = ""
end
StructTypes.StructType(::TypeFoo) = StructTypes.Mutable()
StructTypes.names(::TypeFoo) = ((:task_id, :TASKID), )
有了这些定义,序列化和反序列化看起来像这样
julia> f1 = JSON3.read("\"TASKID\": 1, \"bar\": \"hello\"", Foo)
Foo(1, "hello")
julia> JSON3.write(f1)
"\"TASKID\":1,\"bar\":\"hello\""
【讨论】:
以上是关于Julia 结构中的 JSON 别名如何与 Go 中的一样?的主要内容,如果未能解决你的问题,请参考以下文章