【问题标题】:Display steam inventory using php and api使用 php 和 api 显示 Steam 库存
【发布时间】:2014-06-04 20:49:26
【问题描述】:

当我查询http://api.steampowered.com/IEconItems_{appid}/GetPlayerItems/v0001/?key={apikey}&steamid={steamid}&format=json时,我得到一个json响应

但问题是,如果没有任何我在任何地方都找不到的附加信息,我不知道如何处理此响应。我在查看我自己的 cs:go 库存时得到的部分响应:

            {
            "id": 235322185,
            "original_id": 190991409,
            "defindex": 19,
            "level": 1,
            "quality": 4,
            "inventory": 70,
            "quantity": 1,
            "rarity": 4,
            "attributes": [
                {
                    "defindex": 6,
                    "value": 1130627072,
                    "float_value": 228
                },
                {
                    "defindex": 7,
                    "value": 1148436480,
                    "float_value": 975
                },
                {
                    "defindex": 8,
                    "value": 1031063904,
                    "float_value": 0.059762358665466309
                },
                {
                    "defindex": 147,
                    "value": "models\/weapons\/stattrack.mdl"
                },
                {
                    "defindex": 145,
                    "value": "models\/weapons\/w_smg_p90_mag.mdl"
                }
            ]

        },
        {
            "id": 236527226,
            "original_id": 236502674,
            "defindex": 27,
            "level": 1,
            "quality": 9,
            "inventory": 82,
            "quantity": 1,
            "rarity": 3,
            "attributes": [
                {
                    "defindex": 6,
                    "value": 1133608960,
                    "float_value": 291
                },
                {
                    "defindex": 7,
                    "value": 1142240880,
                    "float_value": 596.8505859375
                },
                {
                    "defindex": 8,
                    "value": 994750258,
                    "float_value": 0.0030927178449928761
                },
                {
                    "defindex": 80,
                    "value": 0,
                    "float_value": 0
                },
                {
                    "defindex": 81,
                    "value": 0,
                    "float_value": 0
                },
                {
                    "defindex": 147,
                    "value": "models\/weapons\/stattrack.mdl"
                },
                {
                    "defindex": 145,
                    "value": "models\/weapons\/w_shot_mag7_mag.mdl"
                }
            ]

        },
        {
            "id": 236529059,
            "original_id": 136971214,
            "defindex": 35,
            "level": 1,
            "quality": 4,
            "inventory": 77,
            "quantity": 1,
            "rarity": 2,
            "attributes": [
                {
                    "defindex": 6,
                    "value": 1077936128,
                    "float_value": 3
                },
                {
                    "defindex": 7,
                    "value": 1141712676,
                    "float_value": 564.611572265625
                },
                {
                    "defindex": 8,
                    "value": 1031160533,
                    "float_value": 0.060122329741716385
                },
                {
                    "defindex": 147,
                    "value": "models\/weapons\/stattrack.mdl"
                }
            ]

        }

id与武器的对应关系以及稀有性和数量也很有意义。但是我不能指望手动找到每个州每种武器的每个 ID 对吗?我是否错过了一个不同的 API,我可以使用它来查看什么武器对应什么 id?

ps: 抱歉英语不好

【问题讨论】:

    标签: php json steam


    【解决方案1】:

    尝试将 JSON 字符串解析为数组。因为这个响应不是一个有效的 JSON 字符串,所以尝试将它插入一个新数组来解析一个有效的 JSON 字符串。

    如:{"main_container": [ --> 你的发布代码]}

    <?php
    
        $jsonResponse = '{"main_container": [
                    {
                    "id": 235322185,
                    "original_id": 190991409,
                    "defindex": 19,
                    "level": 1,
                    "quality": 4,
                    "inventory": 70,
                    "quantity": 1,
                    "rarity": 4,
                    "attributes": [
                        {
                            "defindex": 6,
                            "value": 1130627072,
                            "float_value": 228
                        },
                        {
                            "defindex": 7,
                            "value": 1148436480,
                            "float_value": 975
                        },
                        {
                            "defindex": 8,
                            "value": 1031063904,
                            "float_value": 0.059762358665466309
                        },
                        {
                            "defindex": 147,
                            "value": "models\/weapons\/stattrack.mdl"
                        },
                        {
                            "defindex": 145,
                            "value": "models\/weapons\/w_smg_p90_mag.mdl"
                        }
                    ]
    
                },
                {
                    "id": 236527226,
                    "original_id": 236502674,
                    "defindex": 27,
                    "level": 1,
                    "quality": 9,
                    "inventory": 82,
                    "quantity": 1,
                    "rarity": 3,
                    "attributes": [
                        {
                            "defindex": 6,
                            "value": 1133608960,
                            "float_value": 291
                        },
                        {
                            "defindex": 7,
                            "value": 1142240880,
                            "float_value": 596.8505859375
                        },
                        {
                            "defindex": 8,
                            "value": 994750258,
                            "float_value": 0.0030927178449928761
                        },
                        {
                            "defindex": 80,
                            "value": 0,
                            "float_value": 0
                        },
                        {
                            "defindex": 81,
                            "value": 0,
                            "float_value": 0
                        },
                        {
                            "defindex": 147,
                            "value": "models\/weapons\/stattrack.mdl"
                        },
                        {
                            "defindex": 145,
                            "value": "models\/weapons\/w_shot_mag7_mag.mdl"
                        }
                    ]
    
                },
                {
                    "id": 236529059,
                    "original_id": 136971214,
                    "defindex": 35,
                    "level": 1,
                    "quality": 4,
                    "inventory": 77,
                    "quantity": 1,
                    "rarity": 2,
                    "attributes": [
                        {
                            "defindex": 6,
                            "value": 1077936128,
                            "float_value": 3
                        },
                        {
                            "defindex": 7,
                            "value": 1141712676,
                            "float_value": 564.611572265625
                        },
                        {
                            "defindex": 8,
                            "value": 1031160533,
                            "float_value": 0.060122329741716385
                        },
                        {
                            "defindex": 147,
                            "value": "models\/weapons\/stattrack.mdl"
                        }
                    ]
    
                }
            ]}
        ';
    
        $jsonDecodeArray = json_decode($jsonResponse, true);
    
        foreach($jsonDecodeArray as $mainContainerItems){
    
            // LOOP THROUGH ALL ITEM GROUP. IN THIS CASE WE HAVE 3 ITEM GROUPS IN
            // $mainContainerItems ARRAY
    
            foreach($mainContainerItems as $inventoryItem){
    
                echo $inventoryItem['id']; // will return for example: 236529059
                echo $inventoryItem['original_id']; // will return for example: 136971214
                echo $inventoryItem['defindex'];
            }       
        }
    ?>
    

    在这种情况下,结果将是一个多维数组,您可以在其中循环使用多个 foreach。

    结果是:

    $jsonDecodeArray 包含包含所有项目的 ma​​in_container 数组,其中单个项目也是一个数组。

    $inventoryItem 包含单个项目及其所有属性。如下图。

    Array
    (
        [id] => 236529059
        [original_id] => 136971214
        [defindex] => 35
        [level] => 1
        [quality] => 4
        [inventory] => 77
        [quantity] => 1
        [rarity] => 2
        [attributes] => Array
            (
                [0] => Array
                    (
                        [defindex] => 6
                        [value] => 1077936128
                        [float_value] => 3
                    )
    
                [1] => Array
                    (
                        [defindex] => 7
                        [value] => 1141712676
                        [float_value] => 564.61157226562
                    )
    
                [2] => Array
                    (
                        [defindex] => 8
                        [value] => 1031160533
                        [float_value] => 0.060122329741716
                    )
    
                [3] => Array
                    (
                        [defindex] => 147
                        [value] => models/weapons/stattrack.mdl
                    )
    
            )
    
    )
    

    【讨论】:

      【解决方案2】:

      您将致电GetSchema 以确定这些是哪些项目。您将 DefIndex 值与 GetSchema 返回的值进行比较

      您的工作流程将如下所示:

      • 调用GetSchema 并将result['items'] 的结果存储在某个地方以便以后查找
      • 调用当前调用并解析项目。对于每个项目,从上方查找您的储值结果
      • GetSchema 还具有您可能需要的稀有度和其他值(即那些属性)

      【讨论】:

        【解决方案3】:

        将您的库存defindex(不是属性)值与此架构进行比较。

        http://api.steampowered.com/IEconItems_730/GetSchema/v0002/?key=xxxxx

        例如,defindex = 19 是架构上的 Weapon_p90。

        【讨论】:

        • 也感谢您的贡献
        猜你喜欢
        • 1970-01-01
        • 2014-11-04
        • 2017-01-01
        • 1970-01-01
        • 2015-11-22
        • 1970-01-01
        • 1970-01-01
        • 2014-11-16
        相关资源
        最近更新 更多