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

Golang Json单值解析

锺离自明
2023-03-14
问题内容

在python中,您可以获取json对象并从中获取特定项目,而无需声明结构,将其保存到结构中,然后像Go中那样获取值。有没有一种包装或更简单的方法来存储Go中来自json的特定值?

蟒蛇

res = res.json()
return res['results'][0]

type Quotes struct {
AskPrice string `json:"ask_price"`
}

quote := new(Quotes)
errJson := json.Unmarshal(content, &quote)
if errJson != nil {
    return "nil", fmt.Errorf("cannot read json body: %v", errJson)
}

问题答案:

您可以解码为map[string]interface{},然后按键获取元素。

data := make(map[string]interface{})
err := json.Unmarshal(content, &data)
if err != nil {
    return nil, err
}

price, ok := data["ask_price"].(string); !ok {
    // ask_price is not a string
    return nil, errors.New("wrong type")
}

// Use price as you wish

通常首选结构,因为它们对类型更明确。您只需要在所需的JSON中声明字段,而无需像使用映射(隐式编码/ json处理)那样键入assert值。



 类似资料:
  • 我需要使用内存有限的ApachePOI解析非常大的excel文件。在谷歌搜索之后,我知道poi提供了SAX解析器来有效地解析大文件,而不需要消耗大量内存。 apachepoisax解析器示例 在上面链接中提供的示例中,方法“cell”只能访问格式化值,但我需要访问单元格的实际值。

  • 问题内容: 根据JSON标准RFC 7159,这是有效的json: 如何使用swift4的可解码代码将此解码为Int?这行不通 问题答案: 它可以很好地与 阅读选项配合使用。从文档中: 指定解析器应允许不是NSArray或NSDictionary实例的顶级对象。 例: 但是,没有这样的选项,并且不接受不是数组或字典的顶级对象。可以在 源代码中看到该方法调用 而没有任何选择:

  • 充值订单 1、用户登录到前台,可对个人账户充值2、点击充值进入支付页面,选择其中一种方式进行支付 3、打开后台-订单-充值订单,可根据下单时间、订单编号、充值用户来进行搜索。

  • 为什么下面的代码返回ValueError?

  • 我想使用xslt转换一些xml文件,但遇到了一个大问题。 在我的输入文件中,我有CDATA标记,它包含xml子树-S,应该复制到输出标记中。我们知道关于这些CDATA标记的一些信息: 我的xsl如下所示: 这样做的输出将是: 注意:如果您在eclipse中测试这个示例,它可以工作( 不会为空),但是xsl:value-of select应该只在元素中工作!因此,在message broker中,它

  • 变量命名 在《初识永远强大的函数》一文中,有一节专门讨论“取名字的学问”,就是有关变量名称的问题,本着温故而知新的原则,这里要复习: 名称格式:(下划线或者字母)+(任意数目的字母,数字或下划线) 注意: 区分大小写 禁止使用保留字 遵循通常习惯 以单一下划线开头的变量名(_X)不会被from module import *语句导入的。 前后有下划线的变量名(X)是系统定义的变量名,对解释器有特殊