2
这里的样品JSON从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)
和everythi正确编组在该结构中。
有什么建议吗?
貌似不同之处在于名称:'Item_description' vs'itemDescription' – Verran
仍然没有任何约束力。如果是这样,为什么'Mana_per_five'正确绑定到原始JSON名称:'ManaPerFive'?试图理解 - 谢谢! – sergserg
当我尝试它时,它似乎有所作为。如果你将'Item_description'切换到'ItemDescription',那么这些字段在解组后被填充。在这个游乐场查看它:http://play.golang.org/p/1ktuaOCpcI – Verran