- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
这是从我正在调用的 Web API 返回的示例 JSON:
{
"Ability1": "Noxious Fumes",
"AbilityId1": 7812,
"AttackSpeed": 0.86,
"Cons": "",
"HP5PerLevel": 0.47,
"Health": 360,
"Speed": 350,
"abilityDescription1": {
"itemDescription": {
"cooldown": "12s",
"cost": "60/70/80/90/100",
"description": "Agni summons a cloud of noxious fumes at his ground target location, doing damage every second. Firing any of Agni's abilities into the fumes detonates the gas, stunning all enemies in the radius.",
"menuitems": [
{
"description": "Ability:",
"value": "Ground Target"
},
{
"description": "Affects:",
"value": "Enemy"
},
{
"description": "Damage:",
"value": "Magical"
},
{
"description": "Radius:",
"value": "20"
}
],
"rankitems": [
{
"description": "Damage per Tick:",
"value": "10/20/30/40/50 (+5% of your magical power)"
},
{
"description": "Fumes Duration:",
"value": "10s"
},
{
"description": "Stun Duration:",
"value": "1s"
}
],
"secondaryDescription": ""
}
},
"abilityDescription5": {
"itemDescription": {
"cooldown": "",
"cost": "",
"description": "After hitting with 4 basic attacks, Agni will gain a buff. On the next cast of Flame Wave or Rain Fire, all enemies hit by those abilities will be additionally set ablaze, taking damage every .5s for 3s.",
"menuitems": [
{
"description": "Affects:",
"value": "Enemy"
},
{
"description": "Damage:",
"value": "Magical"
}
],
"rankitems": [
{
"description": "Damage per Tick:",
"value": "5 (+10% of your magical power)"
}
],
"secondaryDescription": ""
}
},
"basicAttack": {
"itemDescription": {
"cooldown": "",
"cost": "",
"description": "",
"menuitems": [
{
"description": "Damage:",
"value": "34 + 1.5/Lvl (+20% of Magical Power)"
},
{
"description": "Progression:",
"value": "None"
}
],
"rankitems": [],
"secondaryDescription": ""
}
},
"id": 1737,
"ret_msg": null
}
还有我的结构:
type God struct {
Ability1 string
Ability2 string
Ability3 string
Ability4 string
Ability5 string
AbilityId1 int
AbilityId2 int
AbilityId3 int
AbilityId4 int
AbilityId5 int
Attack_speed float64
Attack_speed_per_level float64
Cons string
Hp5_per_level float64
Health int
Health_per_five int
Health_per_level int
Item1 string
Item2 string
Item3 string
Item4 string
Item5 string
Item6 string
Item7 string
Item8 string
Item9 string
ItemId1 int
ItemId2 int
ItemId3 int
ItemId4 int
ItemId5 int
ItemId6 int
ItemId7 int
ItemId8 int
ItemId9 int
Lore string
Mp5_per_level float64
Magic_protection int
Magic_protection_per_level int
Mana int
Mana_per_five float64
Mana_per_level int
Name string
On_free_rotation string
Pantheon string
Physical_power int
Physical_power_per_level int
Physical_protection int
Physical_protection_per_level float64
Pros string
Roles string
Speed int
Title string
Type string
Abilitydescription1 struct {
Item_description struct {
Cooldown string
Cost string
Description string
Menu_items struct {
Description string
Value string
}
Rank_items struct {
Description string
Value string
}
Secondary_description string
}
}
Ability_description2 struct {
Item_description struct {
Cooldown string
Cost string
Description string
Menu_items struct {
Description string
Value string
}
Rank_items struct {
Description string
Value string
}
Secondary_description string
}
}
Ability_description3 struct {
Item_description struct {
Cooldown string
Cost string
Description string
Menu_items struct {
Description string
Value string
}
Rank_items struct {
Description string
Value string
}
Secondary_description string
}
}
Ability_description4 struct {
Item_description struct {
Cooldown string
Cost string
Description string
Menu_items struct {
Description string
Value string
}
Rank_items struct {
Description string
Value string
}
Secondary_description string
}
}
Ability_description5 struct {
Item_description struct {
Cooldown string
Cost string
Description string
Menu_items struct {
Description string
Value string
}
Rank_items struct {
Description string
Value string
}
Secondary_description string
}
}
Basic_attack struct {
Item_description struct {
cooldown string
cost string
description string
Menu_items struct {
Description string
Value string
}
Rank_items struct {
Description string
Value string
}
Secondary_description string
}
}
Id int
Ret_msg string
}
下面是我如何将 JSON 响应解码到结构数组中:
var gods []God
json.Unmarshal(jsonResponse, &gods)
return gods
除 abilityDescription1(2,3,4,5)
和该结构中的所有内容外,所有内容均已正确编码。
有什么建议吗?
最佳答案
使用结构标签将 JSON 字段名称映射到结构字段名称。
您的许多结构字段都是小写的,因此未导出,这意味着 encoding/json 包无法访问/编码它们。看看http://golang.org/pkg/reflect/#StructTag (尽管 JSON 包会将“Description”与“description”匹配 - 即小写字母已经匹配)
你也最好(为了可读性/添加标签的能力)将你的结构拆分成单独的项目,然后嵌入它们。在某些情况下,您会重复 Rank_items
,而您可以定义一次,然后根据需要将其嵌入:
例如
Basic_attack struct {
ItemDescription ItemDesc `json:"itemDescription"`
Menu []MenuItems `json:"menuitems"`
Rank []RankItems `json:"rankitems"`
}
ItemDesc struct {
Cooldown string `json:"cooldown"`
Cost string `json:"cost"`
Description string `json:"description"`
Menu []MenuItems `json:"menuitems"`
...
}
MenuItems struct {
Description string
Value string
}
RankItems struct {
Description string
Value string
}
关于json - 将嵌套 JSON 响应解码为嵌套结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21895743/
我目前正在尝试基于哈希表构建字典。逻辑是:有一个名为 HashTable 的结构,其中包含以下内容: HashFunc HashFunc; PrintFunc PrintEntry; CompareF
如果我有一个指向结构/对象的指针,并且该结构/对象包含另外两个指向其他对象的指针,并且我想删除“包含这两个指针的对象而不破坏它所持有的指针”——我该怎么做这样做吗? 指向对象 A 的指针(包含指向对象
像这样的代码 package main import "fmt" type Hello struct { ID int Raw string } type World []*Hell
我有一个采用以下格式的 CSV: Module, Topic, Sub-topic 它需要能够导入到具有以下格式的 MySQL 数据库中: CREATE TABLE `modules` ( `id
通常我使用类似的东西 copy((uint8_t*)&POD, (uint8_t*)(&POD + 1 ), back_inserter(rawData)); copy((uint8_t*)&PODV
错误 : 联合只能在具有兼容列类型的表上执行。 结构(层:字符串,skyward_number:字符串,skyward_points:字符串)<> 结构(skyward_number:字符串,层:字符
我有一个指向结构的指针数组,我正在尝试使用它们进行 while 循环。我对如何准确初始化它并不完全有信心,但我一直这样做: Entry *newEntry = malloc(sizeof(Entry)
我正在学习 C,我的问题可能很愚蠢,但我很困惑。在这样的函数中: int afunction(somevariables) { if (someconditions)
我现在正在做一项编程作业,我并没有真正完全掌握链接,因为我们还没有涉及它。但是我觉得我需要它来做我想做的事情,因为数组还不够 我创建了一个结构,如下 struct node { float coef;
给定以下代码片段: #include #include #define MAX_SIZE 15 typedef struct{ int touchdowns; int intercepti
struct contact list[3]; int checknullarray() { for(int x=0;x<10;x++) { if(strlen(con
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Empty “for” loop in Facebook ajax what does AJAX call
我刚刚在反射器中浏览了一个文件,并在结构构造函数中看到了这个: this = new Binder.SyntaxNodeOrToken(); 我以前从未见过该术语。有人能解释一下这个赋值在 C# 中的
我经常使用字符串常量,例如: DICT_KEY1 = 'DICT_KEY1' DICT_KEY2 = 'DICT_KEY2' ... 很多时候我不介意实际的文字是什么,只要它们是独一无二的并且对人类读
我是 C 的新手,我不明白为什么下面的代码不起作用: typedef struct{ uint8_t a; uint8_t* b; } test_struct; test_struct
您能否制作一个行为类似于内置类之一的结构,您可以在其中直接分配值而无需调用属性? 前任: RoundedDouble count; count = 5; 而不是使用 RoundedDouble cou
这是我的代码: #include typedef struct { const char *description; float value; int age; } swag
在创建嵌套列表时,我认为 R 具有对列表元素有用的命名结构。我有一个列表列表,并希望应用包含在任何列表中的每个向量的函数。 lapply这样做但随后剥离了列表的命名结构。我该怎么办 lapply嵌套列
我正在做一个用于学习目的的个人组织者,我从来没有使用过 XML,所以我不确定我的解决方案是否是最好的。这是我附带的 XML 文件的基本结构:
我是新来的 nosql概念,所以当我开始学习时 PouchDB ,我找到了这个转换表。我的困惑是,如何PouchDB如果可以说我有多个表,是否意味着我需要创建多个数据库?因为根据我在 pouchdb
我是一名优秀的程序员,十分优秀!