Как спарсить API определенный текст с помощью C#?

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 444
Благодарностей
1 287
Баллы
113
Всем доброго времени суток. Подскажите, пожалуйста. Когда-то на форуме мне помогли парсить данные Json с помощью C#, но применить его к API данным, у меня не выходит из-за отсутствия знаний.

Вот API данные для парса:
Код:
{
"objects": [
  {
   "itemId": "f2dd2-06f0-52fd-8b48-c4e4e3cf6286",
   "type": "offer",
   "amount": 1,
   "classId": "56054:771150",
   "gameId": "9a92",
   "gameType": "",
   "inMarket": true,
   "lockStatus": false,
   "title": "Favorite",
   "description": "",
   "image": "https://",
   "slug": "Favorite-Favo",
   "owner": "86bc-4285-bfff-605989de63e5",
   "ownersBlockchainId": "aea72ba86b733027f769c3fe282ade36ee7c929",
   "status": "active",
   "discount": 28,
   "price": {
    "Dlc": "",
    "USD": "647"
   },
   "instantPrice": {
    "DMC": "",
    "Dlc": ""
   },
Вот C# код, который мне помог парсить с Json:
C#:
JToken JToken1 = JValue.Parse(project.Variables["LootJsonALL"].Value); // тут код ответа
for (int i1=0; i1<JToken1.Count(); i1++) {
    JToken JToken2 = JToken1.ElementAt(i1);
    if (JToken2["title"].ToString() == project.Variables["Name"].Value) {
        project.SendInfoToLog(JToken2.ToString(), false);
        //Выбираем любое свойство какое надо отдать:
        return JToken2["USD"].ToString(); // вернет сразу "99"
         }
}
throw new Exception ("искали, искали. и нифига не нашли!!!");
Подскажите, пожалуйста, как его переделать, что бы в результате получить в переменные title: Favorite discount: 28 USD: 647 ?


Заранее, очень благодарен за помощь!
 
Регистрация
05.06.2019
Сообщения
570
Благодарностей
453
Баллы
63
Примечание:
Json не валидный, видно обрезал, но сделал для примера:

Конвертируй получаемый json ответ, пример ниже

Конвертация Json to CSharp:
public class Price
{
    public string Dlc { get; set; }
    public string USD { get; set; }
}

public class InstantPrice
{
    public string DMC { get; set; }
    public string Dlc { get; set; }
}

public class Object
{
    public string itemId { get; set; }
    public string type { get; set; }
    public int amount { get; set; }
    public string classId { get; set; }
    public string gameId { get; set; }
    public string gameType { get; set; }
    public bool inMarket { get; set; }
    public bool lockStatus { get; set; }
    public string title { get; set; }
    public string description { get; set; }
    public string image { get; set; }
    public string slug { get; set; }
    public string owner { get; set; }
    public string ownersBlockchainId { get; set; }
    public string status { get; set; }
    public int discount { get; set; }
    public Price price { get; set; }
    public InstantPrice instantPrice { get; set; }
}

public class RootObject
{
    public List<Object> objects { get; set; }
}
Десериализация

string json_str = project.Variables["json"].Value;
var json_serializer = new System.Web.Script.Serialization.JavaScriptSerializer();

или подключи библиотеку NewtoJson и десериализация json в C#, а еще проще, в зенке есть метод, который парсит Json - https://zennolab.com/wiki/ru:json_xml
 
  • Спасибо
Реакции: Gunjubasik

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 444
Благодарностей
1 287
Баллы
113
Можно пожалуйста ссылку, где я могу узнать как делать Конвертацию Json to CSharp и про десериализация json в C#?
По поводу парсинга через Зенку - он выдает ошибку:
Выполнение действия Parse Json/Xml Unterminated string. Expected delimiter: ". Path 'objects[4].recommendedPrice.d3', line 316, position 6.
Так что если каждая из страниц будет с такими проблемами, думаю проще будет найти метод через C#?)


Примечание:
Json не валидный, видно обрезал, но сделал для примера:

Конвертируй получаемый json ответ, пример ниже

Конвертация Json to CSharp:
public class Price
{
    public string Dlc { get; set; }
    public string USD { get; set; }
}

public class InstantPrice
{
    public string DMC { get; set; }
    public string Dlc { get; set; }
}

public class Object
{
    public string itemId { get; set; }
    public string type { get; set; }
    public int amount { get; set; }
    public string classId { get; set; }
    public string gameId { get; set; }
    public string gameType { get; set; }
    public bool inMarket { get; set; }
    public bool lockStatus { get; set; }
    public string title { get; set; }
    public string description { get; set; }
    public string image { get; set; }
    public string slug { get; set; }
    public string owner { get; set; }
    public string ownersBlockchainId { get; set; }
    public string status { get; set; }
    public int discount { get; set; }
    public Price price { get; set; }
    public InstantPrice instantPrice { get; set; }
}

public class RootObject
{
    public List<Object> objects { get; set; }
}
Десериализация

string json_str = project.Variables["json"].Value;
var json_serializer = new System.Web.Script.Serialization.JavaScriptSerializer();

или подключи библиотеку NewtoJson и десериализация json в C#, а еще проще, в зенке есть метод, который парсит Json - https://zennolab.com/wiki/ru:json_xml
 

THE CaHeK

Client
Регистрация
29.01.2016
Сообщения
293
Благодарностей
115
Баллы
43
Подскажите, пожалуйста, как его переделать, что бы в результате получить в переменные title: Favorite discount: 28 USD: 647 ?
Заранее, очень благодарен за помощь!
В зенке есть кубик, "парсинг json". На вход - переменная с json, и оно распарсит так как вам нужно. Потом смотрите на -->Переменные ---> Json
1587339995967.png
 

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 444
Благодарностей
1 287
Баллы
113
Если есть +100 объектов, как мне найти именно тот объект, с которым я хочу работать и вносить в переменные?

В зенке есть кубик, "парсинг json". На вход - переменная с json, и оно распарсит так как вам нужно. Потом смотрите на -->Переменные ---> Json
Посмотреть вложение 54147
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)