Ruby:如何将json解析为特定类型
我想用Ruby解析一个JSON。Ruby对我来说是全新的,但我必须使用它:-) 下面是我的小片段,应该可以进行解析:Ruby:如何将json解析为特定类型,json,ruby,typesafe,Json,Ruby,Typesafe,我想用Ruby解析一个JSON。Ruby对我来说是全新的,但我必须使用它:-) 下面是我的小片段,应该可以进行解析: response = File.read("app/helpers/example_announcement.json") JSON.parse(response) 这个很好用。唯一的缺点是,我不知道我使用它时的属性,它不是类型安全的。所以我为它创建了对象 class Announcements @@announcements = Hash # a map key =&
response = File.read("app/helpers/example_announcement.json")
JSON.parse(response)
这个很好用。唯一的缺点是,我不知道我使用它时的属性,它不是类型安全的。所以我为它创建了对象
class Announcements
@@announcements = Hash # a map key => value where key is string and value is type of Announcement
end
class Announcement
@@name = ""
@@status = ""
@@rewards = Array
end
这就是json的样子
{
"announcements": {
"id1" : {
"name": "The Diamond Announcement",
"status": "published",
"reward": [
{
"id": "hardCurrency",
"amount": 100
}
]
},
"id2": {
"name": "The Normal Announcement",
"players": [],
"status": "published",
"reward": []
}
}
}
所以我试着像这样解析JSON
response = File.read("app/helpers/example_announcement.json")
JSON.parse(response, Announcements)
但事情不是这样的^^有人能帮我吗?你想实现什么?你在寻找什么样的最终结果?你说的“我不知道我使用它时的属性”是什么意思?(如果JSON是完全任意的,那么除了显示它之外,您没有什么安全的方法!!它不符合某些模式吗?)如果您只是想从JSON中创建一些“任意”结构,那么请忘记创建您自己的类(因为您“不知道JSON是什么格式”?);最好的方法是:
JSON.parse(response,object\u class:OpenStruct)
。但我再次问,你为什么要这样做?您希望实现什么?此外,ruby在类型安全方面并不真正起作用。Ruby非常相信duck类型,它允许固有的灵活性。如果您知道什么是公告
,那么让它包装解析而不是解析并传递到其中可能更有意义。此外,大多数Ruby专家通常不推荐类变量@
。请详细解释一下您的概念,解释一下为什么、如何以及您预期的用途。我们有一个后端运行的Scala,它定义了结构的外观。前端是用Ruby编写的。它从api端点读取数据。因为我们的前端开发人员不知道数据结构,所以我们希望实现一个生成器,从我们的Scala数据类型创建ruby类,使前端开发人员更容易理解他们将接收什么样的数据,但是如果ruby中没有这一概念,那么我们将使用API文档进行其他操作。正如我所说,我不是来自ruby世界,而是来自Scala,但我们继承了ruby前端^^