Как получить число через json [RIPEXT]

Ganter1234

Участник
Сообщения
1,149
Реакции
667
У меня есть запрос через который я получаю ответ: {"response":1}, вопрос, как мне получить это число? через GetInt показывает 0 (я использую устаревший метод чтобы получить айди игрока через датапак)

Кодик:
void Zapros()
{
    char szURL[500];
    FormatEx(szURL, sizeof(szURL), "urlzaprosa");

    DataPack hPack = new DataPack();
    hPack.WriteCell(client);
    httpClient.Get(szURL, OnTodoReceived, hPack);
}

public void OnTodoReceived(HTTPResponse response, DataPack hPack)
{
    hPack.Reset();
    int client = hPack.ReadCell();

    if (response.Status != HTTPStatus_OK) {
        return;
    }

    JSONObject res = view_as<JSONObject>(response.Data);

    int Success = res.GetInt("response");
    PrintToChat(client, "Ответ: %i", Success);
    delete hPack;
}
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #2
Так может 0 и прилетает? Если ключа в ответе нет, то рип вообще ошибку бьет, а не возвращает 0.
 

Ganter1234

Участник
Сообщения
1,149
Реакции
667
Так может 0 и прилетает? Если ключа в ответе нет, то рип вообще ошибку бьет, а не возвращает 0.
Ошибок нет, приходит ток 0, хотя по сути должно 1

Ответ: 0

Можешь дать подсказку как мне получить этот ключ
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #4
@Ganter1234, попробуй сделать из json ToString и вывести
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #7
@Ganter1234, этот метод вернет JSON в том представлении, в котором его сервер возвращает. Весь. Не конкретный ключ.
 

Young <

Now, finally free
Сообщения
1,263
Реакции
505
@Ganter1234, полностью ответ в виде json объекта отправьте. (JSONObject.ToString) Именно не как вы его видите, а как RIP его принимает.
 

Young <

Now, finally free
Сообщения
1,263
Реакции
505
У меня есть запрос через который я получаю ответ: {"response":1}, вопрос, как мне получить это число? через GetInt показывает 0 (я использую устаревший метод чтобы получить айди игрока через датапак)

Кодик:
void Zapros()
{
    char szURL[500];
    FormatEx(szURL, sizeof(szURL), "urlzaprosa");

    DataPack hPack = new DataPack();
    hPack.WriteCell(client);
    httpClient.Get(szURL, OnTodoReceived, hPack);
}

public void OnTodoReceived(HTTPResponse response, DataPack hPack)
{
    hPack.Reset();
    int client = hPack.ReadCell();

    if (response.Status != HTTPStatus_OK) {
        return;
    }

    JSONObject res = view_as<JSONObject>(response.Data);

    int Success = res.GetInt("response");
    PrintToChat(client, "Ответ: %i", Success);
    delete hPack;
}
Кстати, утечка, return до закрытия датапака.
 

Ganter1234

Участник
Сообщения
1,149
Реакции
667
Короче криво, но решил свою проблему, решение:
ужс:
JSONObject res = view_as<JSONObject>(response.Data);

char Inter[32];
res.ToString(Inter, sizeof(Inter));
int Success = StringToInt(Inter[12]);
PrintToChatAll("Ответ: %i", Success);

Кстати, утечка, return до закрытия датапака.
Спасибо, забыл про нее, исправил)

(Но все же интересно как это адекватно сделать?)
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,914
  • Команда форума
  • #11
Может Вы покажете конкретный эндпоинт, с которым у Вас проблема, и конкретный код?
А ещё лучше конкретный жсон.
 

R1KO

fuck society
Сообщения
9,457
Реакции
7,786
  • Команда форума
  • #12
Короче криво, но решил свою проблему, решение:
ужс:
JSONObject res = view_as<JSONObject>(response.Data);

char Inter[32];
res.ToString(Inter, sizeof(Inter));
int Success = StringToInt(Inter[12]);
PrintToChatAll("Ответ: %i", Success);


Спасибо, забыл про нее, исправил)

(Но все же интересно как это адекватно сделать?)
char szResponse[256];
res.ToString(szResponse, sizeof(szResponse));

PrintToChatAll("Ответ: '%s'", szResponse);
 
Сверху Снизу