C# 只读取每个JSON对象的第一个值
我将120多个请求(在多个任务之间)发送到 (200个对象)我的目标是只获取名称,而不触及其他对象C# 只读取每个JSON对象的第一个值,c#,json,C#,Json,我将120多个请求(在多个任务之间)发送到 (200个对象)我的目标是只获取名称,而不触及其他对象 public async Task<List<string>> ZwrocNazwe(string zapytanie) { var listaNazw = new List<string>(); var s = await _klientHttp.GetStreamAsync(zapytanie
public async Task<List<string>> ZwrocNazwe(string zapytanie)
{
var listaNazw = new List<string>();
var s = await _klientHttp.GetStreamAsync(zapytanie);
using (StreamReader sr = new StreamReader(s))
using (JsonReader reader = new JsonTextReader(sr))
{
reader.SupportMultipleContent = true;
while (reader.Read())
{
if (reader.TokenType != JsonToken.StartObject) continue;
reader.Read();
if (reader.Value.ToString() != "name") continue;
reader.Read();
listaNazw.Add(Convert.ToString(reader.Value));
reader.Skip();
}
}
return listaNazw;
}
公共异步任务ZwrocNazwe(字符串zapytanie)
{
var listaNazw=新列表();
var s=await_klientHttp.GetStreamAsync(zapytanie);
使用(StreamReader sr=新StreamReader)
使用(JsonReader=newjsontextreader(sr))
{
reader.SupportMultipleContent=true;
while(reader.Read())
{
如果(reader.TokenType!=JsonToken.StartObject)继续;
reader.Read();
如果(reader.Value.ToString()!=“name”)继续;
reader.Read();
Add(Convert.ToString(reader.Value));
reader.Skip();
}
}
返回listaNazw;
}
我工作,但比我预期的要花更多的时间。我做错什么了吗 这是一个组合结果的函数:
public async Task<List<string>> ZwrocListePrzedmiotow(List<int> listaId, string sciezka)
{
// Groups ids of items into groups of 200.
var listaZapytan = ZwrocListeZapytan(listaId);
// Makes request per each group to get item info.
var listaZadan = new List<Task<List<string>>>();
foreach (var zapytanie in listaZapytan)
listaZadan.Add(
ZwrocNazwe(sciezka + zapytanie));
// Combines results.
await Task.WhenAll(listaZadan);
var listaPrzedmiotow = new List<string>();
foreach (var zadanie in listaZadan)
listaPrzedmiotow.AddRange(zadanie.Result);
return listaPrzedmiotow;
}
public异步任务zwroclistprzedmiotow(列表帮助,字符串sciezka)
{
//将项目ID分组为200个组。
var listaZapytan=zwroclistzapytan(listaId);
//为每个组发出请求以获取项目信息。
var listaZadan=新列表();
foreach(listaZapytan中的var zapytanie)
listaZadan.添加(
ZwrocNazwe(sciezka+zapytanie));
//合并结果。
等待任务。WhenAll(listaZadan);
var listaPrzedmiotow=新列表();
foreach(listaZadan的var zadanie)
ListapRzedMitow.AddRange(zadanie.Result);
返回列表aprzedmitow;
}
有趣的是,自从我开始使用
GetStreamAsync
而不是GetStringAsync
以来,我等待结果的时间甚至更长。“比我预期的要长”。这至少可以说是相当模糊的。你的期望是什么,你经历的时间是什么?HTTP请求是慢的部分,还是处理它的代码?每个请求中的数据有多大?客户端和服务器之间的网络速度是多少?我们不能说你是否做错了什么,因为我们不知道你的期望是什么,也不知道它们是否现实。我意识到这一点。我给您提供了API的链接,以便您可以查看数据大小。下载速度可能会有所不同,因为它是宿舍中的一个网络。你看到代码中有任何缺陷吗?恕我直言,你应该在问题中包含相关信息,而不是期望人们从中得到它。请问数据的大小是多少?120个请求中的每一个都是相同的吗?你还没有告诉我们需要多长时间,或者你预计需要多长时间,或者我问的任何其他问题。代码没有明显的错误,它显然是这样工作的,但是任何优化或重新安排它的潜力(或其他方面)取决于您没有告诉我们的事情。另外,为什么您需要请求120次?