Получить конкретные данные JSON без декодирования нескольких ссылок - PullRequest
0 голосов
/ 20 октября 2018

У меня проблема с получением правильных данных из декодированного файла JSON.Я не знаю, правильный ли мой вопрос, так как я на самом деле не знаю, что я делаю в данный момент.

Итак, это то, что я не хочу сделать.

    $ln = 'https://api.steamprices.net/v2/csgoprices/?id='.market_hash_name.'&key=XXX';
    $link1 = file_get_contents($ln);
    $myarray1 = json_decode($link1, true);

   echo $myarray1['median_price'];

Я пытаюсь получить цену за каждый скин Steam, который загружается в мой код.Этот код делает то, что он загружает эту ссылку API для каждого элемента, который я загружаю.Поэтому, если у меня 50 товаров, эта ссылка будет загружена 50 раз, что не принимается API.

Что я хочу сделать, так это то, что я хочу загрузить его один раз и получить цены для каждогопункт из этой точной ссылки.Эта ссылка будет выглядеть следующим образом:

https://api.steamprices.net/v2/csgoprices/?&key=XXX

Итак, допустим, я загружаю его один раз, а затем, когда я хочу применить к нему market_hash_name , как это сделать?Да?

Я предполагаю, что это что-то вроде этого.

    $priceJson = file_get_contents('https://api.steamprices.net/v2/csgoprices/?key=XXX');
    $priceData = json_decode($priceJson, true);

    echo $priceData[''.$market_hash_name.'']['price'];

Но, похоже, это не работает.Я прошу прощения за это грязное объяснение, я незнаком с этим.

Обратите внимание, что пример ответа для ссылки API выглядит следующим образом:

{
  "-r-H1Z1 Shirt": {
    "price": 0.11,
    "image": "https://steamcommunity-a.akamaihd.net/economy/image/iGm5OjgdO5r8OoJ7TJjS39tTyGCTzzQwmWl1QPRXu8oaf69-NOHLAbqw_23aLe8AcRQ8-3uyKA7_CGvsJYds9U65FMF7i6AbXTJ8PDm57EliZdK7KLPuuh3dxC3m4m0ihzss0MKE6NtIt4qs-JukOX73WgETXYze_pxEBA",
    "game": "h1z1"
  },
  "2016 Invitational Crate": {
    "price": 0.09,
    "image": "https://steamcommunity-a.akamaihd.net/economy/image/iGm5OjgdO5r8OoJ7TJjS39tTyGCTzzQwmWl1QPRXu8oaf69-NOHLAbqw_23aLe8AcRQ8-3uyKA7_CGvsJYds9U65FMF7i6APSjJ6BjX9rGBYZ9ioCPzysSX6hNNacA",
    "game": "h1z1"
  },
  "ANGRYPUG Motorcycle Helmet": {
    "price": 0.17,
    "image": "https://steamcommunity-a.akamaihd.net/economy/image/iGm5OjgdO5r8OoJ7TJjS39tTyGCTzzQwmWl1QPRXu8oaf69-NOHLAbqw_23aLe8AcRQ8-3uyKA7_CGvsJYds9U65FMF7i6AbXTJ8PDm57EliZdK7KLPuuh3WySnxyXoUgz870MKd7sFTkZq98oW1ORiqAVsCUYfbNu3SUQqvUSGyY__iEw",
    "game": "h1z1"
  },

Другой вывод

{
    "name":"Aces High Pin",
    "price":1210,
    "have":2,
    "max":9,
    "rate":95,
    "tr":0
    }

1 Ответ

0 голосов
/ 20 октября 2018

Хорошо, указанная вами строка json недействительна, но что-то вроде этого может вам помочь

<?php

$jsonData=file_get_contents("json.file"); // simply contains your json string as posted
$jsonArray=json_decode($jsonData,true);
$jsonObject=json_decode($jsonData);

$list_of_MHN=array("2016 Invitational Crate","ANGRYPUG Motorcycle Helmet");

print_r($jsonArray);
exit;

foreach($jsonArray as $hash_name=>$arr){
    if(in_array($hash_name,$list_of_MHN)){
        print_r($arr);
    }
}

for($i=0;$i<count($list_of_MHN);$i++){
    if(isset($jsonArray[$list_of_MHN[$i]])){
        print_r($jsonArray[$list_of_MHN[$i]]);
    }
}


for($i=0;$i<count($list_of_MHN);$i++){
    if(isset($jsonObject->$list_of_MHN[$i])){
        print_r($jsonObject->$list_of_MHN[$i]);
    }
}

?>
...