为了账号安全,请及时绑定邮箱和手机立即绑定

将 json 对象字符串编组为 json 数组

将 json 对象字符串编组为 json 数组

Go
拉莫斯之舞 2021-09-27 10:42:03
这个问题与这个已解决的问题有关(即类似的代码,但它是一个不同的问题。下面代码的输出是一系列 json 对象,但它们加在一起不是 json(至少是我需要的格式) . 即对象不在数组中,并且它们之间没有逗号。如何返回数组中以逗号分隔的对象?buffer := new(bytes.Buffer)for _, jsonRawMessage := range sliceOfJsonRawMessages{    if err := json.Compact(buffer, jsonRawMessage); err != nil{        fmt.Println("error")    }}output, _ := json.Marshal(buffer.String())w.Header().Set("Content-Type", contentTypeJSON)w.Write(output)输出(2 个不同的 json 对象,但实际上还有更多){    "Dir": "/usr/local/go/src/bytes",    "ImportPath": "bytes",    "Name": "bytes",    "Doc": "Package bytes implements functions for the manipulation of byte slices.",    "Target": "/usr/local/go/pkg/darwin_amd64/bytes.a",    "Goroot": true,    "Standard": true,    "Root": "/usr/local/go",    "GoFiles": [        "buffer.go",        "bytes.go",        "bytes_decl.go",        "reader.go"    ],    "IgnoredGoFiles": [        "equal_test.go"    ],    "Imports": [        "errors",        "io",        "unicode",        "unicode/utf8"    ],    "Deps": [        "errors",        "io",        "runtime",        "sync",        "sync/atomic",        "unicode",        "unicode/utf8",        "unsafe"    ],    "TestGoFiles": [        "export_test.go"    ],    "XTestGoFiles": [        "buffer_test.go",        "bytes_test.go",        "compare_test.go",        "example_test.go",        "reader_test.go"    ],    "XTestImports": [        "bytes",        "encoding/base64",        "fmt",        "io",        "io/ioutil",        "math/rand",        "os",        "reflect",        "runtime",        "sort",        "sync",        "testing",        "unicode",        "unicode/utf8"    ]}{    "Dir": "/usr/local/go/src/errors",    "ImportPath": "errors",    "Name": "errors",    "Doc": "Package errors implements functions to manipulate errors.",    "Target": "/usr/local/go/pkg/darwin_amd64/errors.a",    "Goroot": true,    "Standard": true,    "Root": "/usr/local/go",    "GoFiles": [        "errors.go"    ],    "Deps": [        "runtime",        "unsafe"    ],
查看完整描述

1 回答

?
慕侠2389804

TA贡献1719条经验 获得超6个赞

您可以自己连接它们:


var buff bytes.Buffer

buff.WriteByte('[')


for i, j := range jsons {

    if i != 0 {

      buff.WriteByte(',')

    }

    buff.Write([]byte(j))

}

buff.WriteByte(']')

然后您可以使用json.Indent或者json.Compact如果您需要进一步清理json。


var output bytes.Buffer

err = json.Indent(&output, buff.Bytes(), "", "  ")

// or json.Compact(&output, buff.Bytes())

if err != nil {

    // something wrong with the json

}


查看完整回答
反对 回复 2021-09-27
  • 1 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信