登录
首页 >  Golang >  Go问答

NDJSON 的替代品?

来源:stackoverflow

时间:2024-02-06 11:54:22 452浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《NDJSON 的替代品?》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


问题内容

我需要一种磁盘序列化格式:

  • 支持utf8或二进制数据

  • 支持每个文件多条消息(例如换行符分隔的 json)

  • (可能)无模式

  • (可能)同时具有节点和 Rust 实现

我找不到 msgpackCBOR 在 go 中支持每个文件多条消息的方法,尽管 cbor (序列)支持它。目前我正在玩 asn.1 ,它看起来不错,但我想知道是否有更好的选择。


正确答案


我让它同时适用于 asn.1 和 cbor,我现在需要尝试 msgpack

package main

import (
    "bytes"
    "github.com/fxamacker/cbor/v2"
    "log"
)

func main() {

    type Record struct {
        Payload string
        Counter int
    }

    r1 := Record{
        "hello", 1}
    r2 := Record{
        " world", 2}

    var buff []byte

    b, err := cbor.Marshal(r1)
    if err != nil {
        log.Fatal(err)
    }
    buff = append(buff, b...)

    b, err = cbor.Marshal(r2)
    if err != nil {
        log.Fatal(err)
    }
    buff = append(buff, b...)

    log.Println(buff)

    var out1, out2 Record
    decoder := cbor.NewDecoder(bytes.NewReader(buff))

    err = decoder.Decode(&out1)
    if err != nil {
        log.Fatal(err)
    }
    log.Println(out1)

    err = decoder.Decode(&out2)
    if err != nil {
        log.Fatal(err)
    }
    log.Println(out2)

}

到这里,我们也就讲完了《NDJSON 的替代品?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>