当前位置: 首页 > 面试题库 >

在Go中解析多个JSON对象

申屠恺
2023-03-14
问题内容

使用该encoding/json包可以很容易地解析如下对象。

[ 
    {"something":"foo"},
    {"something-else":"bar"}
]

我面临的问题是从服务器返回多个命令,如下所示:

{"something":"foo"}
{"something-else":"bar"}

无法使用以下代码进行解析。

correct_format := strings.Replace(string(resp_body), "}{", "},{", -1)
json_output := "[" + correct_format + "]"

我正在尝试解析Common Crawl数据(请参阅示例)。

我怎样才能做到这一点?


问题答案:

假设您的输入确实是一系列有效的JSON文档,请使用json.Decoder对其进行解码:

package main

import (
    "encoding/json"
    "fmt"
    "io"
    "log"
    "strings"
)

var input = `
{"foo": "bar"}
{"foo": "baz"}
`

type Doc struct {
    Foo string
}

func main() {
    dec := json.NewDecoder(strings.NewReader(input))
    for {
        var doc Doc

        err := dec.Decode(&doc)
        if err == io.EOF {
            // all done
            break
        }
        if err != nil {
            log.Fatal(err)
        }

        fmt.Printf("%+v\n", doc)
    }
}

游乐场:https://play.golang.org/p/ANx8MoMC0yq

如果您的输入确实是您在问题中显示的内容,则不是JSON,您必须编写自己的解析器。



 类似资料:
  • 问题内容: 我正在解析包含json对象的文件。问题是某些文件在一行中有多个对象。例如: 我做了一个函数,尝试在没有左括号的情况下解析子字符串,但是值中可能有大括号。我尝试过通过检查引号的开头和结尾来跳过值,但是也有带有转义引号的值。有关如何处理此问题的任何想法? 我的尝试: 问题答案: 简单但不够健壮的版本: 如果包含在字符串中,则将失败 正如其他建议一样,您然后可以尝试解析每个元素。如果无效,则

  • 问题内容: 我们有事务日志文件,其中每个事务都是JSON格式的一行。我们经常需要获取数据的选定部分,执行一次时间转换,然后以特定格式将结果馈送到另一个系统中。我编写了一个Python脚本,可以根据需要执行此操作,但是我希望Go可以更快,并且可以给我一个开始学习Go的机会。因此,我写了以下内容: 编译时没有任何抱怨,但是令我惊讶的是缺乏性能改进。为了进行测试,我将2,000,000行日志放入tmpf

  • 问题内容: 我有JSON对象,如下所示: 我想在android中解析数据并将其存储到数据库中,但是我在Jsonobject中感到困惑,谢谢 问题答案: 以下是用于解析json字符串的代码段代码。请经历一下:

  • 我是JSON新手,我真的很难用Java中的GSON解析这个布局 如果有帮助的话,是Redmine API为时间条目提供的输出。我正在努力理解一些基本的JSON概念,比如对象和数组,但我还没有找到一个布局类似的示例。 在使用我读过的教程时,我主要担心的是多个ID字段会混淆。 什么是最好的方式来分析这个问题而不束缚自己? 我不打算使用Gson,很乐意使用Jackson或内置库的解决方案。最终目标是An

  • 问题内容: 我正在尝试在Python中加载和解析JSON文件。但是我在尝试加载文件时遇到了困难: 产量: 我看着 18.2。— Python文档中的 JSON编码器和解码器 ,但是通读这个看起来糟透了的文档非常令人沮丧。 前几行(用随机条目匿名): 问题答案: 您有一个JSON Lines格式的文本文件。您需要逐行解析文件: 每 行都 包含有效的JSON,但总的来说,它不是有效的JSON值,因为没

  • 我想解析一个包含多个JSON对象的文件,这些对象未包含在数组中,仅由换行符分隔。该文件具有以下模式: 据我所知,使用的标准方法在这里不起作用,因为对象没有包含在数组中。那么有没有一种优雅的方法可以在Python中解析这样的文件而不修改它呢?