AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-1712433

Milacay's questions

Martin Hope
Milacay
Asked: 2025-04-17 02:00:55 +0800 CST

C# JSON - Como obter valor dentro de um objeto aninhado em uma lista

  • 5

Sou iniciante em C#. Estou tentando converter uma string JSON em uma lista parecida com esta:

firstName   lastName  departmentID
John        Doe       AAA111
John2       Doe2      BBB222

Postagem atualizada - com base na resposta do David (obrigado por isso). Desculpe por toda a confusão que posso ter causado.

Aqui está o código:

public IActionResult JsonTest()
{

    var respJSON = @"
        [
              {
                ""firstName"": ""John"",
                ""lastName"": ""Doe"",
                ""departmentID"": { ""id"": ""AAA111"" },
              },
              {
                ""firstName"": ""John2"",
                ""lastName"": ""Doe2"",
                ""departmentID"": { ""id"": ""BBB222"" }
              }
          ]
        ";

    List<UserNameWithDept> user = JsonConvert.DeserializeObject<List<UserNameWithDept>>(respJSON);

    return Ok();
}


public class Identifier
{
    [JsonProperty("id")]
    public string Id { get; set; }
}

public class UserNameWithDept
{
    [JsonProperty("firstName")]
    public string FirstName { get; set; }

    [JsonProperty("lastName")]
    public string LastName { get; set; }

    [JsonProperty("departmentID")]
    public Identifier Department { get; set; }
}

Estou pegando o Departamento como um objeto e então o valor dentro dele. insira a descrição da imagem aqui

Como posso fazer a lista ficar assim? Departamento tem valor, não objeto.

Department  "AAA111"
FirstName   "John"
LastName    "Doe"
c#
  • 1 respostas
  • 53 Views
Martin Hope
Milacay
Asked: 2025-04-03 23:52:12 +0800 CST

Respostas da API de múltiplas tarefas assíncronas do ASP.NET

  • 4

Sou novo em C# e estou tentando implementar tarefas assíncronas para várias chamadas de API, mas estou enfrentando um problema de como retornar a resposta da tarefa.

O código abaixo funciona perfeitamente para múltiplas chamadas de API:

public class ItemResponseJsonModel
{
    public string ID { get; set; }
    public string ResponseJSON { get; set; }
}

var listIDs = new List<string>
{
    "ID1",
    "ID2",
    "ID3"
};

var postTasks = listIDs.Select(async p => new ItemResponseJsonModel { ID = p, ResponseJSON = await APIGetItemsByID(p) });
var posts = await System.Threading.Tasks.Task.WhenAll(postTasks);
foreach (var postContent in posts)
{
    listResults.Add(postContent);
}

Task<string> APIGetItemsByID(string ID)
{
    int page = 1;
    string? API_Key = "The-API-Key"
    Task<string> respJSON;

    var client = new HttpClient();
    string baseURL = $"https://API_URL/api/Items?pageSize=1000&Page={page}&id=";
    client.DefaultRequestHeaders.Add("Authorization", "Basic " + API_Key);
    respJSON = client.GetStringAsync(baseURL + ID);
    return respJSON;
}

Agora estou me deparando com a situação de que cada ID pode ter várias páginas de resultados. A última página sempre retorna "[]", o que significa que não há dados, então implementei o loop Do/While abaixo para obter todas as respostas para cada ID. Este código abaixo funciona, mas é lento. Por favor, deixe-me saber se ele pode ser aprovado.

async Task<string> APIGetItemsByID(string ID)
{
    int page = 1;
    string? API_Key = "The-API-Key"
    string respJSON = string.Empty;
    string respContent;

    do
    {
        var client = new HttpClient();
        string baseURL = $"https://API_URL/api/Items?pageSize=1000&Page={page}&id=";
        client.DefaultRequestHeaders.Add("Authorization", "Basic " + API_Key);        
        respContent = client.GetStringAsync(baseURL + ID);
        if (respContent != "[]") { 
            respJSON += respContent;
        } 
        page++;
    } while (respContent != "[]" && page < 10);
    return respJSON;
}

Qualquer ajuda é bem-vinda.

c#
  • 1 respostas
  • 55 Views
Martin Hope
Milacay
Asked: 2025-04-03 05:58:27 +0800 CST

ASP.NET armazena respostas de várias tarefas na lista de 2 colunas

  • 6

Sou novo em C# e tenho esse código abaixo fazendo várias chamadas de API. Esse código funciona bem, pois posso ver que ele listResultstem as respostas de cada chamada.

List<string> listResults = new();
var listIDs = new List<string>
{
    "ID1",
    "ID2",
    "ID3"
};

string baseURL = $"https://API_URL/id=";
var postTasks = listIDs.Select(p => client.GetStringAsync(baseURL + p));
var posts = await System.Threading.Tasks.Task.WhenAll(postTasks);
foreach (var postContent in posts)
{
    listResults.Add(postContent);
    Debug.WriteLine(postContent);
}

Agora quero armazenar a string de resposta na lista de 2 colunas: a 1ª coluna é o ID e a 2ª coluna é a string de resposta.

Então eu tenho este modelo de resposta:

public class ItemResponseJsonModel
{
    public string ID { get; set; }
    public string ResponseJSON { get; set; }
}

Então tentei implementar a lista com o modelo no código abaixo, mas foi aí que fiquei preso em como adicionar o ID na primeira coluna de listResultscada resposta.

List<ItemResponseJsonModel> listResults = new();
var listIDs = new List<string>
{
    "ID1",
    "ID2",
    "ID3"
};

string baseURL = $"https://API_URL/id=";
var postTasks = listIDs.Select(p => client.GetStringAsync(baseURL + p));
var posts = await System.Threading.Tasks.Task.WhenAll(postTasks);
foreach (var postContent in posts)
{
    listResults.Add(postContent);  // This is where the error will say cannot convert string to ItemResponseJsonModel.
    Debug.WriteLine(postContent);
}

Quero que o resultado final listResultsfique como abaixo, onde a primeira coluna é o ID e a segunda coluna é a string de resposta.

listResults {
    { ID = "ID1", ResponseJSON = "ResponseJSON" },
    { ID = "ID2", ResponseJSON = "ResponseJSON" },
    { ID = "ID3", ResponseJSON = "ResponseJSON" },
}

Como posso fazer isso? Posso armazená-lo no Dictionary<string, string>?

c#
  • 1 respostas
  • 58 Views
Martin Hope
Milacay
Asked: 2025-02-05 03:36:18 +0800 CST

MVC ASP.NET Core mostra erro detalhado para ambiente de preparação

  • 6

Tentei definir o ambiente de preparação onde posso ver o erro detalhado. Se eu alternar ASPNETCORE_ENVIRONMENTpara Development, verei o erro detalhado. Vou explicar abaixo.

launchSettings.json:

{
    "profiles": {
      "IIS Express": {
        "commandName": "IISExpress",
        "launchBrowser": true,
        "environmentVariables": {
          "ASPNETCORE_ENVIRONMENT": "Development"
        }
      },
      "TestApp-DEV": {
        "commandName": "Project",
        "launchBrowser": true,
        "environmentVariables": {
          "ASPNETCORE_ENVIRONMENT": "Development"
        },
        "dotnetRunMessages": true,
        "applicationUrl": "https://localhost:7000;http://localhost:5000"
      },
      "TestApp-PROD": {
        "commandName": "Project",
        "launchBrowser": true,
        "environmentVariables": {
          "ASPNETCORE_ENVIRONMENT": "Production"
        },
        "dotnetRunMessages": true,
        "applicationUrl": "https://localhost:7000;https://TestApp.scm.azurewebsites.net"
      },
      "TestApp-Staging": {
        "commandName": "Project",
        "launchBrowser": true,
        "environmentVariables": {
          "ASPNETCORE_ENVIRONMENT": "Staging"
        },
        "dotnetRunMessages": true,
        "applicationUrl": "https://localhost:7000;https://TestApp.scm.azurewebsites.net"
      }
    },
    "iisSettings": {
      "windowsAuthentication": false,
      "anonymousAuthentication": true,
      "iisExpress": {
        "applicationUrl": "http://localhost:40116",
        "sslPort": 44301
      }
    }
  }

appsettings.jsontem 3 arquivos de configuração diferentes. Note que appsettings.Staging.jsone appsettings.Production.jsonsão quase a mesma configuração.

insira a descrição da imagem aqui

  • Se eu executar o projeto no localhost com o ambiente "TestApp-DEV", verei a página de erro detalhada.

  • Se eu executar o projeto no localhost como Staging ou Production, receberei esta mensagem:

insira a descrição da imagem aqui

Minha solução alternativa para solução de problemas relacionados ao ambiente de produção é renomear o appsettings.Development.jsonpara algo temporário, depois alterar o nome appsettings.Staging.jsonpara appsettings.Development.jsone executar o projeto no ambiente de desenvolvimento para que eu possa ver o erro detalhado relacionado à produção. Depois disso, reverta os nomes do appsettings.

Existe uma maneira de mostrar o erro detalhado quando executo o projeto no locolhost no ambiente de preparação ou projeção?

c#
  • 1 respostas
  • 32 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve