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

JSON解码为interface {}产生的结构体产生map [string] interface {},而不是struct

宣意致
2023-03-14
问题内容

这是一个复制问题的游乐场:https :
//play.golang.org/p/GgHsLffp1G

基本上,我正在尝试编写一个带有结构并返回可以将http请求解码为该类型的函数的函数。不幸的是,一些类型信息丢失了,返回的类型是map [string]
interface {}而不是正确的结构类型。如何将正确的类型传达给JSON解码器?JSON解组会更好吗?


问题答案:

这似乎可行:

操场

func requestParser(i interface{}) parser {
    return func(r io.Reader) (interface{}, error) {
        json.NewDecoder(r).Decode(i)
        return reflect.ValueOf(i).Elem(), nil
    }
}

func main() {
    var foo Foo
    s := "{\"Name\":\"Logan\"}"
    p := requestParser(&foo)
}


 类似资料:
  • 问题内容: 从来源来看,我无法影响我在地图中获得的数据,该地图以表示。 我需要处理所包含的数据,最好是(其中的数据非常适合该处理)。 我还需要从数据中生成键列表,因为这些键是事先未知的。 我可以在网上找到的大多数类似问题或多或少都说这是不可能的,但是如果我的地图是,则表明数据在那里,可读性为。 我该怎么办fmt.Println可以做什么? 问题答案: 处理未知接口的一种安全方法,只需使用fmt.S

  • 问题内容: 我在使用类型化嵌套地图时遇到一个非常奇怪的问题。 我究竟做错了什么?为什么仅由于地图嵌套在地图中而突然失败? 问题答案: 让我们来看一下: 定义时,可以为给定的字符串索引设置所需的任何类型(满足 空接口 协定的任何类型,也可以是任何类型)。 但是,当您尝试访问某些键时,您不会得到一些int,字符串或任何自定义结构,但会得到一个 为了将其视为字符串,您可以进行类型断言或类型切换。 在这里

  • 问题内容: 我只想编写这样的代码: 我以为可以代表任何类型,所以也可以代表任何类型,现在我知道我错了,是一个整体类型,不能视为。 因此,有人可以帮助我如何使此代码正常工作,或其他解决方案吗? PS :我知道或可以相互转换,但是实际上这并不是我的意图,可能还有另一种类型,而不是and 。 问题答案: 现在我知道我错了,是一个整体类型,不能视为。 是的,那是因为它是它自己的类型(而不是其他任何类型的“

  • Kafka的源码 阅读起来,思路很清晰,命名也是很规范。 看完以后我们总结一下KafkaProducer这儿哪些地方值得我们学习: (1)Kafka的网络部分的设计绝对是一个亮点,Kafka自己基于NIO封装了一套自己的网络框架,支持一个客户端与多个Broker建立连接。 (2)处理拆包和粘包的的思路和代码,绝对是教科书级别的,可以把代码复制粘贴下来直接用到自己的线上的项目去。 (3)Record

  • 我们使用StreamListeners for Spring Kafka,并使用基于JPA的发件箱发送消息。发件箱是从消费中异步清空的,因此我们不希望“从JPA表读取,向Kafka生成消息”上的事务。 但是我们也有重试主题,因此如果使用失败,我们会将失败的消息移动到重试主题(最终是DLT),这确实需要事务性的。 据我所知,只有在全局基础上(设置事务id前缀),而不是在具体绑定上,才有可能为生产者打

  • 问题内容: 无法编码 http://play.golang.org/p/Si4hd8I0JE 可以在gob中编码吗?我可以用JSON编码 问题答案: 加 http://play.golang.org/p/Dd3IzJgl0A