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

在Go中序列化混合类型JSON数组

魏烨熠
2023-03-14
问题内容

我想返回一个看起来像这样的结构:

{
    results: [
        ["ooid1", 2.0, "Söme text"],
        ["ooid2", 1.3, "Åther text"],
    ]
}

这是一个数组,包括字符串,浮点数和Unicode字符。

如果是Python,我将能够:

import json
json.dumps({'results': [["ooid1", 2.0, u"Söme text"], ...])

但是在Go中,您不能具有混合类型的数组(或切片)。

我想到使用这样的结构:

type Row struct {
    Ooid string
    Score float64
    Text rune
}

但是我不希望每个字典都成为字典,我希望每个字典都由3个元素组成。


问题答案:

[]interface{}

type Results struct {
     Rows []interface{} `json:"results"`
}

如果要访问存储在其中的值,则必须使用类型断言 []interface{}

for _, row := range results.Rows {
    switch r := row.(type) {
    case string:
        fmt.Println("string", r)
    case float64:
        fmt.Println("float64", r)
    case int64:
        fmt.Println("int64", r)
    default:
        fmt.Println("not found")
    } 
}


 类似资料:
  • 问题内容: 可以说我有以下格式的JSON: 我试图避免自定义反序列化器,并尝试将上述JSON(称为Wrapper.java)反序列化为Java POJO。“类型”字段指示“对象”反序列化,即。type = foo表示使用Foo.java反序列化“ object”字段。(如果type = Bar,则使用Bar.java反序列化对象字段)。元数据/所有者将始终使用相同的反序列化方式,每个方法都使用一个

  • 我正在将RedditAPI中的一些内容反序列化到POJO中。我的目标是尽可能简化代码,因为reddit中实体之间的JSON结构通常是相同的。 例如,反序列化链接对象的JSON如下所示: 我可以反序列化这一点没有问题,但由于reddit注释的不同之处在于其类型为t1,并且在其下方的数据对象中具有不同的结构,因此我希望将相同的类结构重新用于JSON包装,而不必创建多个具有一行或两行差异的复制类。 我创

  • 问题内容: 我正在尝试将json数据反序列化为模型类,但是失败了。这是我的工作: 这是我的模型的样子: 您可以看到我到达这里的Json:http : //api.worldbank.org/incomeLevels/LIC/countries? format=json 这是我得到的错误: 无法将JSON数组反序列化为“ Mvc4AsyncSample.Models.CountryModel”类型。

  • 问题内容: 我正在为项目使用Typescript,需要将集合序列化为json,将其保存到文件中,然后将该文件反序列化为类似的集合。该集合看起来像: 我的工具界面如下所示: 工具实现如下所示: 我有一些工具界面的实现:textTool,imageTool和rectangleTool。我需要解决的问题是,当我将文件内容反序列化为工具集合时,我只会得到一个常规对象,而不是例如textTool的实例。 我

  • 例如:在pojo类中使用Date对象,将其序列化为默认格式“2016-09-27T12:11:17.430Z”。我只需要序列化它来显示日期值,去掉与时间相关的信息。

  • 问题内容: 尝试按我想要的顺序打印页面时出现问题。在我的代码中,我输入了以下内容: 但是,当我看到页面上的显示时,它显示: JSON格式的字符串: 我需要按用户ID,数量和成功的顺序排列。已经尝试在代码中重新排序,但无济于事。我也尝试过....需要一些帮助,谢谢!! 问题答案: 你不能也不应该依赖JSON对象中元素的顺序。 来自http://www.json.org/的JSON规范 对象是名称/值