草庐IT

go - Beego/Golang - 查询结构的值

coder 2024-07-07 原文

我有一个使用 Beego 框架在 Golang 中构建的 API,我有一个具有多个连接的查询,然后返回一个 JSON 结果。

我希望有一种方法可以将每一行转换为具有更好键名的结构,IE 而不是“Stage__Description”只是“Stage”等...所以我构建了一个带有键名的 ResultMap 结构我想,我应该创建一个 map 吗?

查询:

type ResultMap struct {
    Id        int
    DateAdded time.Time
    FirstName string
    LastName  string
    Username  string
    Stage     string
    station   string
    status    string
}

//var maps []ResultMap
var maps []orm.Params
num, err := o.QueryTable("test_result_detail").
    Filter("Result__Serial", "121994-0001").
    Values(&maps, "id", "date_added", "stage__description", "station__station", "status__status", "operator__username", "operator__first_name", "operator__last_name" )

JSON 结果

[
  {
    "DateAdded": "2016-10-20T00:00:00-05:00",
    "Id": 8306105,
    "Operator__FirstName": "Jose",
    "Operator__LastName": "Mendez",
    "Operator__Username": "3362",
    "Stage__Description": "VR1 Test",
    "Station__Station": "TS0653",
    "Status__Status": "PASS"
  },
  {
    "DateAdded": "2016-10-20T00:00:00-05:00",
    "Id": 8306465,
    "Operator__FirstName": "Jose",
    "Operator__LastName": "Mendez",
    "Operator__Username": "3362",
    "Stage__Description": "QA Lab X-Ray Inspection",
    "Station__Station": "LABEQP-0004",
    "Status__Status": "PASS"
  },
  {
    "DateAdded": "2016-10-28T00:00:00-05:00",
    "Id": 8547267,
    "Operator__FirstName": "Jose",
    "Operator__LastName": "Mendez",
    "Operator__Username": "3362",
    "Stage__Description": "Capture Customer SN",
    "Station__Station": "N/A",
    "Status__Status": "PASS"
  },
  {
    "DateAdded": "2016-10-28T00:00:00-05:00",
    "Id": 8547851,
    "Operator__FirstName": "Jose",
    "Operator__LastName": "Mendez",
    "Operator__Username": "3362",
    "Stage__Description": "Final Test",
    "Station__Station": "TS0653",
    "Status__Status": "PASS"
  },
  {
    "DateAdded": "2017-02-14T00:00:00-06:00",
    "Id": 10993864,
    "Operator__FirstName": "Jose",
    "Operator__LastName": "Mendez",
    "Operator__Username": "3362",
    "Stage__Description": "QA Mechanical Final Inspection",
    "Station__Station": "VISUAL INSPECTION",
    "Status__Status": "PASS"
  }
]

最佳答案

您想在您的结构上使用 json 注释,然后使用 json.Unmarshal 将数据放入您的结构中。

这是一个例子:

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    // The struct you want to store the data in
    // Note the json tags that show which json field corresponds to which struct field
    type Data struct {
        FirstName string `json:"Operator__FirstName"`
        LastName  string `json:"Operator__LastName"`
    }
    // Create a slice of these structs since our json is an array of results
    var structData []Data

    // The json you want to dump into the structs
    jsonData := []byte(`[{"Operator__FirstName": "Bob", "Operator__LastName": "Smith"},{"Operator__FirstName": "John", "Operator__LastName": "Adams"}]`)

    _ = json.Unmarshal(jsonData, &structData)

    fmt.Printf("%+v", structData)
}

在 Go Playground 中:https://play.golang.org/p/Z2P7oUVT9i

关于go - Beego/Golang - 查询结构的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42403742/

有关go - Beego/Golang - 查询结构的值的更多相关文章

  1. ruby - ECONNRESET (Whois::ConnectionError) - 尝试在 Ruby 中查询 Whois 时出错 - 2

    我正在用Ruby编写一个简单的程序来检查域列表是否被占用。基本上它循环遍历列表,并使用以下函数进行检查。require'rubygems'require'whois'defcheck_domain(domain)c=Whois::Client.newc.query("google.com").available?end程序不断出错(即使我在google.com中进行硬编码),并打印以下消息。鉴于该程序非常简单,我已经没有什么想法了-有什么建议吗?/Library/Ruby/Gems/1.8/gems/whois-2.0.2/lib/whois/server/adapters/base.

  2. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  3. ruby - 如果指定键的值在数组中相同,如何合并哈希 - 2

    我有一个这样的哈希数组:[{:foo=>2,:date=>Sat,01Sep2014},{:foo2=>2,:date=>Sat,02Sep2014},{:foo3=>3,:date=>Sat,01Sep2014},{:foo4=>4,:date=>Sat,03Sep2014},{:foo5=>5,:date=>Sat,02Sep2014}]如果:date相同,我想合并哈希值。我对上面数组的期望是:[{:foo=>2,:foo3=>3,:date=>Sat,01Sep2014},{:foo2=>2,:foo5=>5:date=>Sat,02Sep2014},{:foo4=>4,:dat

  4. ruby-on-rails - 在 Rails 和 ActiveRecord 中查询时忽略某些字段 - 2

    我知道我可以指定某些字段来使用pluck查询数据库。ids=Item.where('due_at但是我想知道,是否有一种方法可以指定我想避免从数据库查询的某些字段。某种反拔?posts=Post.where(published:true).do_not_lookup(:enormous_field) 最佳答案 Model#attribute_names应该返回列/属性数组。您可以排除其中一些并传递给pluck或select方法。像这样:posts=Post.where(published:true).select(Post.attr

  5. ruby - 检查字符串是否包含散列中的任何键并返回它包含的键的值 - 2

    我有一个包含多个键的散列和一个字符串,该字符串不包含散列中的任何键或包含一个键。h={"k1"=>"v1","k2"=>"v2","k3"=>"v3"}s="thisisanexamplestringthatmightoccurwithakeysomewhereinthestringk1(withspecialcharacterslike(^&*$#@!^&&*))"检查s是否包含h中的任何键的最佳方法是什么,如果包含,则返回它包含的键的值?例如,对于上面的h和s的例子,输出应该是v1。编辑:只有字符串是用户定义的。哈希将始终相同。 最佳答案

  6. ruby - 获取模块中定义的所有常量的值 - 2

    我想获取模块中定义的所有常量的值:moduleLettersA='apple'.freezeB='boy'.freezeendconstants给了我常量的名字:Letters.constants(false)#=>[:A,:B]如何获取它们的值的数组,即["apple","boy"]? 最佳答案 为了做到这一点,请使用mapLetters.constants(false).map&Letters.method(:const_get)这将返回["a","b"]第二种方式:Letters.constants(false).map{|c

  7. ruby - 是否有用于序列化和反序列化各种格式的对象层次结构的模式? - 2

    给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最

  8. ruby-on-rails - 一般建议和推荐的文件夹结构 - Sinatra - 2

    您将如何构建一个简单的Sinatra应用程序?我正在制作,我希望该应用具有以下功能:“应用程序”更像是一个包含所有信息的管理仪表板。然后另一个应用程序将通过REST访问信息。我还没有创建仪表板,只是从数据库中获取东西session和身份验证(尚未实现)您可以上传图片,其他应用可以显示这些图片我已经使用RSpec创建了一个测试文件通过Prawn生成报告目前的设置是这样的:app.rbtest_app.rb因为我实际上只有应用程序和测试文件。到目前为止,我已经将Datamapper用于ORM,将SQLite用于数据库。这是我的第一个Ruby/Sinatra项目,所以欢迎任何和所有建议-我应

  9. sql - 查询忽略时间戳日期的时间范围 - 2

    我正在尝试查询我的Rails数据库(Postgres)中的购买表,我想查询时间范围。例如,我想知道在所有日期的下午2点到3点之间进行了多少次购买。此表中有一个created_at列,但我不知道如何在不搜索特定日期的情况下完成此操作。我试过:Purchases.where("created_atBETWEEN?and?",Time.now-1.hour,Time.now)但这最终只会搜索今天与那些时间的日期。 最佳答案 您需要使用PostgreSQL'sdate_part/extractfunction从created_at中提取小时

  10. ruby - 获取数组中的值并最小化某个类属性的最优雅的方法是什么? - 2

    假设我有以下类(class):classPersondefinitialize(name,age)@name=name@age=ageenddefget_agereturn@ageendend我有一组Person对象。是否有一种简洁的、类似于Ruby的方法来获取最小(或最大)年龄的人?如何根据它对它们进行排序? 最佳答案 这样做会:people_array.min_by(&:get_age)people_array.max_by(&:get_age)people_array.sort_by(&:get_age)

随机推荐